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