SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_list
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY col_name,...] [HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name]]
STRAIGHT_JOIN:強制按 FROM 順序連表,優化器選錯順序時使用。SQL_SMALL_RESULT / SQL_BIG_RESULT:配合 GROUP BY/DISTINCT,告知結果集大小,優化器選擇臨時表 vs 排序。HIGH_PRIORITY:提升 SELECT 優先級高於寫操作,慎用。DISTINCT/DISTINCTROW:結果集去重,NULL 視為相等只保留一行。ALL:默認行為,無效關鍵字。INTO OUTFILE 'file':導出帶列/行終止符的文本,export_options 語法同 LOAD DATA INFILE。INTO DUMPFILE 'file':僅寫入單行原始數據,無格式化。FILE 權限。*:按建表順序所有列。col AS alias 或 col alias。COUNT/SUM/AVG/MIN/MAX 等。tbl_name [AS] alias,後續引用必須用別名,不能以數字開頭。expr comp_op expr,comp_op:=, >, <, >=, <=, !=, <>。< 更靠近字母表頭,> 更靠近尾部;忽略尾部空格。< 早於,> 晚於;字符/日期類型需加引號。IS [NOT] NULL、[NOT] BETWEEN ... AND ...、[NOT] LIKE 'pattern'、[NOT] IN (...)。LIKE 通配符:% 任意長度,_ 單字符;datetime 建議用 LIKE '%9:20%' 避免秒/毫秒干擾。AND 優先級高於 OR,可用括號改變順序。GROUP BY col [, col...]:分組聚合,SELECT 列必須為分組列或聚合函數。HAVING:分組後過濾,可用聚合函數;WHERE 不可用聚合函數。WITH ROLLUP:產生超級聚合行(MySQL 擴展)。1 為第一列),不建議用位置。ASC(默認升序)、DESC 降序。LIMIT n = LIMIT 0, n:前 n 行。LIMIT offset, n:跳過 offset 行取 n 行,offset 從 0 開始。歷史遺留擴展,用於結果集後處理(如 ANALYSE()),現代版本極少使用,了解即可。
SELECT *,顯式列出所需列,減少網絡/IO/緩存壓力。LIMIT 100000, 20 性能差,改用游標/ID 範圍查詢。EXPLAIN 驗證索引使用、掃描行數、臨時表/文件排序。