2
A
回答
3
如果甲骨文真的有一個壞的執行計劃來了,你真的必須告訴它使用哪個索引(發生很少,但它發生),你可以通過用戶優化提示:
SELECT /*+ INDEX(mytable myindex) */ foobar from mytable
但是,這應該是你的最後一招。之前,你甚至嘗試做這樣的說法,使用
execute dbms_stats.gather_table_stats('myschema','mytable')
告訴甲骨文分析表;希望它能找出什麼時候使用索引。
4
您不必在選擇查詢中使用索引 - Oracle將決定哪些索引(如果有的話)最有助於執行查詢。通過爲所需數據提供快捷方式,索引可以幫助某些查詢(並非全部)提供性能。您應該閱讀Oracle Concepts Guide 中的索引 - 閱讀「索引概述」一節。
2
通常,您不需要對查詢進行任何說明就可以使用索引。 Oracle的計劃評估人員會選擇(希望)爲您執行該查詢的最佳方式。這是關係數據庫的Codd原則之一。
創建索引時可以提高性能嗎?
幾種情況。他們中的一些:
- 當您嘗試搜索標準(即:
select * from foo where field = 121
,它會幫助,如果你的表是大,你有場索引)如果要排序的 - 結果。 (即:
select * from foo order by field
,它會幫助,如果你的表是大,你有場索引) - 當您執行聯接
相關問題
- 1. Oracle索引使用
- 2. 在Oracle中使用功能索引
- 3. 在oracle中使用solr索引clob列
- 4. 在oracle中使用索引與創建索引
- 5. Oracle沒有使用索引
- 6. Oracle在加入時未使用索引
- 7. Oracle使用索引在哪裏
- 8. 在oracle中索引查詢
- 9. 在oracle中強制索引
- 10. Oracle中的索引
- 11. Oracle:利用使用兩個索引
- 12. Oracle - 在視圖中使用表索引(如果存在的話)
- 13. 外連接和使用Oracle的索引
- 14. 的PreparedStatement對Oracle和索引使用
- 15. oracle不使用定義的索引
- 16. 關閉Oracle中的索引
- 17. Oracle中索引的類型?
- 18. (Oracle DSEE)在vlvFilter中使用參數的LDAP瀏覽索引
- 19. ORACLE - 未在加入中使用的索引
- 20. 如何確定在oracle中是否使用了哪個索引
- 21. 爲什麼查詢不在Oracle中使用索引
- 22. 我可以在Oracle文本索引中使用OQL嗎?
- 23. 在Oracle中使用異步填充創建索引
- 24. 在Oracle中工作的索引
- 25. 索引在Oracle數據庫中的表
- 26. 在oracle中索引一個FK
- 27. Oracle索引「打破」
- 28. Oracle索引加入
- 29. Oracle日期索引
- 30. Oracle NLS_UPPER索引列
根據數據庫版本和某些參數設置,對'DBMS_STATS.GATHER_TABLE_STATS'的調用可能不會自動收集索引統計信息。在這種情況下,我們需要使用'DBMS_STATS.GATHER_INDEX_STATS'或顯式設置'CASCADE'參數:'execute dbms_stats.gather_table_stats('myschema','mytable',cascade => TRUE)' – APC 2009-11-20 12:37:49