MySQL 的 SELECT 語句功能強大,支援豐富的查詢選項。理解其完整語法結構,能幫助開發者編寫更高效、精準的查詢語句。
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]]
最簡單的 SELECT select_list 就能完成多種操作:
SELECT 1+1 返回 2| 關鍵字 | 用途 | 適用場景 |
|---|---|---|
| STRAIGHT_JOIN | 強制表連接順序 | 優化器選擇非最佳連接順序時 |
| SQL_SMALL_RESULT | 告知優化器結果集較小 | 配合 GROUP BY/DISTINCT,使用臨時表而非排序 |
| SQL_BIG_RESULT | 告知優化器結果集較大 | 配合 GROUP BY/DISTINCT,使用排序而非臨時表 |
| HIGH_PRIORITY | 提升查詢優先級 | 需優先於更新操作執行的快速查詢 |
提示:這四個關鍵字屬於 MySQL 對 ANSI SQL92 的擴展,大多數情況下無需使用,優化器通常能自動做出最佳決策。
LOAD DATA INFILE 的 FIELDS/LINES 子句一致日常開發中,重點掌握 WHERE、GROUP BY、ORDER BY、LIMIT 等核心子句。優化器提示關鍵字僅在性能調優的特定場景下使用,濫用反而可能干擾優化器判斷。