為何在查詢中索引未被使用
“為什麼索引沒有被使用”是一個涉及面較廣的問題。有很多種原因會導致索引沒有被使用。我們可以按照下面一些非常有用的檢查列表來檢查我們的索引。
排錯步驟 |
快速檢查 |
表上是否存在索引? |
索引是否應該被使用? |
索引本身的問題 |
索引列或者索引的前置列是否在單表(non-join)查詢的 Where 條件中(predicate list)? |
索引列是否用在連線謂詞中(join predicates)? |
索引列在 IN 或者多個 OR 語句中? |
索引列是否被函式修改? |
隱式型別轉換(implicit type conversion)是什麼? |
是否在語義(semantically)上無法使用索引? |
錯誤型別的索引掃描? |
是否索引列為可空? |
NLS_SORT是否設定為二進位制(BINARY)? |
是否使用的是不可見索引(invisible indexes)? |
最佳化器和成本計算相關問題 |
是否存在準確且合適的統計資訊(Statistics)? |
一個索引是否與其它的索引有相同的等級或者成本(cost)? |
索引的選擇度不高? |
在總體成本中,表掃描的成本佔大部分 |
訪問空索引並不意味著比訪問有值的索引高效。 |
引數設定 |
其它問題 |
是否使用了檢視/子查詢? |
是否存在遠端表(remote table)? |
是否使用並行執行(PX)? |
是否是包含了子查詢的Update語句? |
查詢是否使用了繫結變數? |
查詢是否引用了帶有延遲約束的列? |
索引提示(hint)不工作 |
有用的 hints: |
2014.08.20 09:21
share you knowledge with the world.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1254374/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為何在查詢中索引未被使用(二)——問題解答索引
- 為何在查詢中索引未被使用 (文件 ID 1549181.1)索引
- 【MOS:1549181.1】為何在查詢中索引未被使用--為什麼索引沒有被使用索引
- 索引監控-查詢從未被使用過的索引索引
- 查詢中讓優化器使用複合索引優化索引
- 為什麼我使用了索引,查詢還是慢?索引
- 【索引】oracle查詢使用索引和不使用索引的比較索引Oracle
- 【索引】Oracle查詢指定索引提高查詢效率索引Oracle
- Mysql建表、索引、函式、查詢使用中的坑!!!MySql索引函式
- 理解索引(中):MySQL查詢過程和高階查詢索引MySql
- 如何在es中查詢null值Null
- 如何在Clob欄位中查詢
- 索引為什麼能提供查詢效能...索引
- 如何在Django ORM中進行not查詢?DjangoORM
- 如何在 JavaScript 中使用媒體查詢JavaScript
- 【Oracle】如何查詢檢視時使用索引Oracle索引
- 為什麼SELECT查詢中應避免使用*?
- elasticsearch之多索引查詢Elasticsearch索引
- Elasticsearch(三):索引查詢Elasticsearch索引
- 查詢索引 常用SQL索引SQL
- 查詢相似的索引索引
- 為什麼 SQL 語句使用了索引,但卻還是慢查詢?SQL索引
- 如何在C#中除錯LINQ查詢C#除錯
- 如何在MySQL中開啟慢查詢日誌?MySql
- 如何在Linux中查詢一個檔案Linux
- 如何在 Linux 中查詢一個檔案Linux
- Oracle 查詢行數很少,為什麼不走索引?Oracle索引
- 【索引】反向索引--條件 範圍查詢索引
- MongoDB慢查詢與索引MongoDB索引
- 字母索引查詢ListView元件索引View元件
- mysql查詢索引結構MySql索引
- 反向索引與模糊查詢索引
- DbForge Studio for Oracle入門教程:如何在查詢生成器中建立查詢Oracle
- 如何在word中進行查詢與替換 word文件中的替換與查詢功能
- 如何在Linux中執行MySQL/MariaDB查詢LinuxMySql
- 如何在 Linux 中查詢服務的埠號Linux
- 如何在MySQL中查詢OS執行緒id(LWP)?MySql執行緒
- 【索引】反向索引--條件 範圍查詢(二)索引