RE: index hint returns wrong results
From: Jonathan Lewis <jonathan_at_jlcomp.demon.co.uk>
Date: Tue, 8 Mar 2016 15:56:52 +0000
Message-ID: <CE70217733273F49A8A162EE074F64D9282C6D3E_at_EXMBX01.thus.corp>
Date: Tue, 8 Mar 2016 15:56:52 +0000
Message-ID: <CE70217733273F49A8A162EE074F64D9282C6D3E_at_EXMBX01.thus.corp>
I wouldn't trust the execution plan 100%. Since it's a global index that meets one of the requirements - so what are the two rowids ? The starting bytes give the data_object_id - are they the same for the two rows; alternatively what does a call to dbms_mview.pmarker(rowid) give for the two rows. Regards Jonathan Lewis http://jonathanlewis.wordpress.com _at_jloracle ________________________________________ From: Terrian, Thomas J CTR (US) [Tom.Terrian.ctr_at_dla.mil] Sent: 08 March 2016 13:50 To: Jonathan Lewis; oracle-l_at_freelists.org Subject: RE: index hint returns wrong results That is interesting. Even when I use the partition name, I still get bad results: select /*+ index(t1 ind1) */ count(*) from scott.t1 partition (sys_p14) where f1 = 'one' and f2 = ' '; COUNT(*) ---------- 2 There is only 1 row in that table where f1 = 'one' and f2 = ' '. And I see partition pruning in the explain plan when it tries to access the table (not for the global index of course). -----Original Message----- From: Jonathan Lewis [mailto:jonathan_at_jlcomp.demon.co.uk] Sent: Tuesday, March 08, 2016 8:05 AM To: Terrian, Thomas J CTR (US); oracle-l_at_freelists.org Subject: [Non-DoD Source] RE: index hint returns wrong results If the table is partitioned then I think it's possible for the error to appear as a result of procedural error on the part of the application. I'd have to check but I think you might be able to do an exchange partition including indexes without validation that got data into the wrong partition which wouldn't be seen by a (partition eliminating) tablescan but was seen by a range scan of a global index. This may be version dependent, of course thanks to enhancements in global index usage. Regards Jonathan Lewis http://jonathanlewis.wordpress.com _at_jloracle ________________________________________ From: oracle-l-bounce_at_freelists.org [oracle-l-bounce_at_freelists.org] on behalf of Terrian, Thomas J CTR (US) [Tom.Terrian.ctr@dla.mil] Sent: 08 March 2016 12:32 To: oracle-l_at_freelists.org Subject: index hint returns wrong results Oracle 12c. Am I missing something or is this a bug? Using an index hint returns the wrong results. Does it matter if the table is partitioned and the index is global or even what fields are in the index? I can't see how any of that should matter. The results should be the same: select /*+ index(t1 ind1) */ count(*) from scott.t1 where f1 = 'one' and f2 = ' '; COUNT(*) ---------- 2 select count(*) from scott.t1 where f1 = 'one' and f2 = ' '; COUNT(*) ---------- 1 -- http://www.freelists.org/webpage/oracle-l --http://www.freelists.org/webpage/oracle-l Received on Tue Mar 08 2016 - 16:56:52 CET