在編寫複雜的SQL查詢時,如何確保我們使用正確的索引並避免全表掃描?我通過確保只加入具有索引的列(主鍵,唯一鍵等)來完成此操作。這夠了嗎?Sql索引與全表掃描
2
A
回答
1
查看查詢的執行計劃以查看查詢優化器是如何認爲必須檢索的。該計劃通常基於表格的統計數據,指數的選擇性和聯合的順序。請注意,優化器可以決定執行全表掃描比索引查找'便宜'。
其他的東西去尋找:
避免子查詢,如果可能的。
減少where子句
4
向數據庫詢問您的查詢的執行計劃,然後從此處繼續。
不要忘記索引出現在where子句中的列。
2
在使用「OR'謂詞
這是很難說什麼是最好的索引,因爲有不同的策略,取決於形勢。儘管如此,你仍然應該對索引進行coupe的工作。
- 索引有時會增加select語句的性能,並且總是會降低插入和更新的性能。
- 要索引表,不必將其作爲某個字段的鍵。而且,現實生活中的指標幾乎總是包含幾個領域。
- 如果您的表現令人滿意,請勿爲「未來目的」創建任何索引。即使你根本沒有索引。
調整索引時務必嘗試分析執行計劃。不要害怕嘗試。
-
+
- 表掃描並不總是壞事。
這全是來自我。
1
使用數據庫優化顧問(SQL Server)來分析您的查詢。它會建議必要的索引來增加你的查詢性能
相關問題
- 1. 全表掃描或索引掃描
- 2. Oracle索引 - 全表掃描/鎖定
- 3. MySQL的 - 自加入 - 全表掃描(無法掃描索引)
- 4. SQL查詢去爲全表掃描,而不是基於索引掃描
- 5. 向後索引掃描與索引掃描
- 6. 如何直接掃描SQL索引表
- 7. 索引搜索與SQL Server中的索引掃描
- 8. 爲什麼QO選擇聚簇索引掃描與表掃描?
- 9. 索引範圍掃描VS索引跳躍式掃描VS索引快速全掃描
- 10. 多個索引與強制表掃描
- 11. SQL Server 2005在索引掃描之前進行全表排序
- 12. 表掃描和索引
- 13. 爲什麼選擇索引範圍掃描通過快速全索引掃描
- 14. 索引搜索與聚集索引掃描 - 爲什麼選擇掃描?
- 15. 全表掃描代替索引範圍掃描導致性能問題
- 16. 正在搜索表/索引掃描
- 17. SQL Server何時選擇索引掃描?
- 18. 索引掃描,表掃描和索引查找有什麼區別?
- 19. 搜索與掃描
- 20. 表掃描和聚簇索引掃描有什麼區別?
- 21. SQL Server的全表掃描和負載
- 22. 表沒有做索引掃描
- 23. 如何索引以避免全表掃描?
- 24. MySQL的執行全表掃描,即使存在索引
- 25. 索引掃描關係
- 26. 聚集索引掃描
- 27. mysql select count(*)與哪裏掃描全表?
- 28. 集羣索引掃描與索引查找
- 29. 索引掃描與探針代替索引查找
- 30. SQL服務器忽略索引並執行表掃描
你能澄清你的第二點嗎? OR的問題究竟是什麼? – SQB 2014-06-25 09:09:46