我知道這個問題已經在這裏被問過不止一次。但我無法解決我的問題,因此再次發佈求助。DB索引不被調用
我有一個表,稱爲交易在Oracle數據庫(11克)與270萬條記錄。有一個包含數值的非空varchar2(20)
(txn_id
)列。這不是表格的主鍵,並且大部分值都是唯一的。我的意思是大部分數值都可以在表格中出現3-4次。
如果我根據TXN_ID
執行select的簡單查詢,則需要大約5秒或更長時間來返回結果。
Select * from Transaction t where t.txn_id = 245643
我有這個列上創建的索引,但是當我檢查上述查詢的解釋計劃時,它使用全表掃描。此查詢在應用程序中多次使用,導致應用程序變慢。
你能提供一些幫助,可能會導致此問題嗎?
發佈查詢計劃(包括訪問和過濾器謂詞)將會很有幫助。如果該列是'varchar2',那麼爲什麼要將它與一個數字而不是一個字符串進行比較?如果你的謂詞是't.txn_id ='245643''會發生什麼呢?你的應用程序是否真的使用了文字(我確定不希望)?如果它使用綁定變量,它綁定的是數值還是字符串值? –
你可以發佈索引定義嗎? txn_id是索引中唯一的列嗎? –