查詢用於從資料庫請求特定資料。在 SQL 中,查詢使用 SELECT 指定資料列,FROM 指定表,WHERE 篩選行。 JOIN 用於合併表。 GROUP BY 用於聚合。 ORDER BY 用於排序。資料庫解析查詢,規劃執行策略,並傳回結果。同一個問題可以用多種方式提出,有些方式比其他方式快得多。
查詢效能取決於多種因素。索引可以加快已篩選列的查找速度。查詢規劃器會根據資料統計資訊在不同的執行策略之間進行選擇。過時的統計資料會導致糟糕的執行計劃。編寫能夠有效利用索引的查詢是一項技能。在 WHERE 子句中對索引列套用函數會阻止索引被使用。如果只需要幾個列,卻查詢選擇所有列,則會浪費頻寬和記憶體。每行只運行一次的子查詢速度很慢。而使用與連線相同的邏輯則速度很快。查詢最佳化既是一門藝術,也是一門科學。資料庫提供了一些工具:EXPLAIN 執行計劃、查詢分析器和效能計數器。解讀這些工具需要練習。在小型資料集上只需幾毫秒即可執行的查詢,在大型資料集上可能需要幾分鐘。這種差異通常在於執行計劃,而不是硬體。
查詢組件
- 選擇 — 要傳回的列
- 從 — 要查詢的表
- 位置 — 行篩選器
- JOIN — 合併表
- 分組依據 — 總計行
- 依下列方式排序 — 對結果進行排序
查詢就是一個問題。資料庫會回答這個問題。答案的品質取決於問題的提出方式。
Comments
No comments yet. Be the first to share a thought.
Leave a comment