當我查詢我的表像這樣的特定對象,我會得到一個空的結果集:Oracle索引行爲
SELECT
a, b, c, valid_to, pk_mykey, myobject
FROM
myschema.mytable
WHERE
valid_to = to_date('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss')
AND
pk_mykey > 0
AND
myobject = 'ABC.123';
但我知道的記錄必須是在表中!
所以我用這個查詢,它會突然出現:
SELECT
/*+ NO_INDEX(mytable myindex) */
a, b, c, valid_to, pk_mykey, myobject
FROM
myschema.mytable
WHERE
valid_to = to_date('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss')
AND
pk_mykey > 0
AND
myobject = 'ABC.123';
因此,通過使用該記錄不會顯示指數,但沒有索引它會?這怎麼可能?我在這裏錯過了什麼?我的表格和/或我的索引有什麼問題?任何想法如何我可以解決這個問題?
(DBMS是的Oracle 11g EE 11.2.0.2.0 64位)
什麼是差異b/w的2個查詢? – 2013-04-30 09:19:58
@ ling.s:'NO_INDEX'提示 – 2013-04-30 09:30:57
@ ling.s:是的,正是a_horse_with_no_name所說的提示。 query1根本不給我任何記錄。 query2恰好爲1條記錄(因爲它應該是)其中myobject ='ABC.123'且其他條件適用 – BaseBallBatBoy 2013-04-30 10:00:53