当我查询我的表像这样的特定对象,我会得到一个空的结果集: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