回答
在SQL Management Studio中,只需鍵入查詢,然後按Control-L(顯示查詢執行計劃)。在那裏,你將能夠看到是否有任何索引正在使用。 「表掃描」表示索引未被使用。 「索引掃描」意味着使用索引。
這實際上比看起來更難 - 即使索引可用,典型的現代數據庫管理系統(MS SQL Server也不例外)有時會執行全表掃描,只是因爲在少量數據上可能會更快。
例子:
The last statement in this SQL Fiddle example可以通過索引來得到滿足,但查詢計劃中明確指出表掃描:
但是,如果我們insert some data中,索引被使用:
更重要的是,在DBMS做出決定可以通過statistics多麼新鮮/準確的影響。
該指數是否使用的最可靠的測試是簡單地與代表性的數據和然後看看execution plan填寫你的數據庫。而且不要忘記在查詢的時候計算查詢的實際執行時間!
簡化示例:如果整個表適合單個數據庫頁,它是更快簡單地加載該網頁,並依次通過它,而不是等待用於附加I/O包含索引的頁面。
我無法支持這個答案。作爲一個數據庫管理員來說,這是一個寵壞的事情,因爲它找不到數據不足的開發的SQL代碼(包括檢查執行計劃),因此優化器在生產數據的上下文中選擇了一個完全不同的計劃。測試可以解決這個問題,但它的效率要高得多,需要具有代表性數據量的Dev設備。 – eidgenossen
即使這篇文章已經超過4歲了,我從中學到了很多,我以前不知道。發現它非常有用。 – Ingenioushax
- 1. 如何檢查MySQL查詢是否在使用覆蓋索引?
- 2. 如何檢查查詢是使用mysql中的索引
- 3. 是否有查詢索引?
- 4. 如何檢查Checkedlistbox2的索引是否檢查了Checkedlistbox1的索引
- 5. 檢查是否輸入搜索查詢
- 6. 如何檢查矢量中的索引是否已被使用
- 7. 如何確定Spring Data Gemfire查詢是否使用Gemfire索引?
- 8. MySQL - 如何知道查詢是否使用FTS索引
- 9. 如何檢查ArrayDeque的索引和索引是否爲空?
- 10. 如何檢查查詢是否正確
- 11. 如何檢查查詢是否有限?
- 12. 檢查索引是否是最新的?
- 13. 如何檢查是否引用指定
- 14. 如何檢查MySQL搜索JOIN查詢時是否存在行?
- 15. 如何使用Luke檢查Solr索引
- 16. 如何使用Lucene查詢ElasticSearch索引
- 17. 如何使用lucene.net查詢solr索引
- 18. 如何使用boto查詢dynamodb2索引?
- 19. 如何使用SQL查詢索引?
- 20. 如何檢查是否「knownlanguages」鍵使用查詢
- 21. 如何檢查使用舊API的MySQL查詢是否成功?
- 22. 如何在查詢中使用HQL檢查對是否存在?
- 23. 檢查Elasticsearch是否已完成索引
- 24. 檢查數組索引是否存在
- 25. RavenDb檢查索引是否存在
- 26. 檢查矩陣索引是否存在
- 27. 檢查WebSQL中是否存在索引
- 28. 是否索引< or > MySQL查詢?
- 29. 如何檢查查詢緩存中是否存在查詢?
- 30. 檢查當前頁面是否是索引中的索引
你看過查詢執行計劃嗎? – Kane