對於Oracle而言,與應用程序調優相關,何時在表上沒有索引以及爲什麼有意義?什麼時候在桌子上沒有索引是有意義的,爲什麼?
回答
如果一個表的數據非常少(少量的行),那麼它不會爲您使用索引。索引使得它能夠快速搜索特定屬性,並且您正在使用的應用程序不需要快速查找,那麼使用索引對您而言幾乎沒有任何作用。
非常感謝你這麼多! –
您會驚訝於小桌子上的索引如何產生重大影響,例如如果表格被非常頻繁地查詢。完整索引掃描可能只需要讀取1個塊,而讀取表格則需要讀取至少2個塊。 –
有關聯到其索引的成本:
- 它佔用的磁盤空間
- 它會減慢更新(索引需要被更新)
- 它使查詢計劃更復雜(稍慢,但更重要的是增加了做出錯誤決策的可能性)
這些成本應該被更有效的查詢處理(更快,更少的I/O)的好處所抵消。
如果索引不足以證明成本合理,則索引將爲負數。
特別是,如果你的數據分佈很低(認爲像'Y'和'N'這樣的標誌),索引不會有多大幫助。可以這樣想:如果索引中不同值的數量很少,優化器可能會選擇不使用索引。有趣的是,如果索引中的列爲空,如果您的查詢條件包含實際值,因爲空值沒有編入索引,這意味着只有實際值(非空)位於該特定索引中,從而不評估表中的大部分行。在「is null」的情況下,它永遠不會使用索引 - 如果你有一個帶有「where」子句的查詢,比如「where mytable.mycolumn爲null」,則放棄你在這裏輸入的所有索引。
- 1. 什麼時候放棄MVVM有意義?
- 2. 什麼時候有服務層沒有意義?
- 3. 爲什麼在'有'的時候有'where'
- 4. 什麼時候進行索引,在Mongoid中索引什麼?
- 5. QTreeWidget :: currentItem什麼時候沒有選擇什麼時候返回?
- 6. 候選鍵有什麼意義?
- 7. 什麼時候預設一個散列是有意義的?
- 8. 爲什麼gettimeofday()和time_t沒有意義?
- 9. 爲什麼const有意義?
- 10. 什麼時候sys.stdin在Python中沒有?
- 11. 什麼時候和爲什麼沒有實現(java.lang.reflect.InvocationTargetException)發生?
- 12. 爲什麼mysql沒有使用索引
- 13. 它爲什麼說Global Name沒有定義它的時候? Python
- 14. 爲什麼搜索沒有定義?
- 15. 什麼時候編寫isEqual在Swift中有意義?
- 16. 什麼是string array [] =「」;是什麼意思?爲什麼它有效?
- 17. 在子集化時允許使用零索引有什麼意義?
- 18. 爲什麼MySql沒有在我們的表上使用索引?
- 19. 什麼時候是Malloc的好主意?
- 20. ::什麼都沒有加前綴時是什麼意思?
- 21. 測試什麼時候沒有屬性
- 22. DatePicker沒有什麼時候點擊
- 23. 調整哈希表的大小有意義嗎?什麼時候?
- 24. 什麼時候在Rails中使用「|| =」運算符?它的意義是什麼?
- 25. 什麼時候File.join有用?
- 26. 什麼時候InputStream.available()有用?
- 27. 什麼時候__proto__有用?
- 28. 爲什麼在aspx.cs中page_load有意義?
- 29. ThisTime&TotalTime有什麼區別?爲什麼有時候兩個值是相等的,有時候會不一樣?
- 30. Google是什麼時候爲一個網頁編制索引的?
歡迎來到Stackoverflow!您能否詳細說明您的問題,比如代碼或其他事情,以便人們能夠儘早解決問題並幫助您?謝謝! – manetsus