简体   繁体   English

内部联接查询-Oracle

[英]Inner join query - oracle

I am trying to run following query in UAT which gives me very quick result, but Comes to production where we have about 10 Millions of records query taking too long time. 我正在尝试在UAT中运行以下查询,这给了我非常快的结果,但是在生产中,我们有大约1000万条记录查询花费的时间太长。 Is there any better way to do it . 有没有更好的办法做到这一点。

SELECT w.row_id,
       w.field_1,
       w.field_2,
       w.field_3,
       b.row_id,
       b.field_1,
       b.field_2,
       b.field_3
  FROM si.table1 w
       INNER JOIN si.table1 b
          ON     w.par_row_id = b.par_row_id
             AND w.field_1 = b.field_1
             AND w.field_3 = b.field_3
 WHERE     w.field4 = 'TEXT1'
       AND b.field4 = 'TEXT1'
       AND UPPER (w.field_2) = 'TEXT2'
       AND UPPER (b.field_2) = 'TEXT3'

For this query: 对于此查询:

SELECT . . .
FROM si.table1 w INNER JOIN
     si.table1 b
     ON w.par_row_id = b.par_row_id AND
        w.field_1 = b.field_1 AND
        w.field_3 = b.field_3 AND
        w.field4 = b.field4
WHERE w.field4 = 'TEXT1' AND
      UPPER(w.field_2) = 'TEXT2' AND
      UPPER(b.field_2) = 'TEXT3';

You need an indexing strategy. 您需要一个索引策略。 I would go for table1(field4, upper(field_2), par_row_id, field_1, field_3, field4) and table1(par_row_id, field_1, field_3, field_4, upper(field2)) . 我会去table1(field4, upper(field_2), par_row_id, field_1, field_3, field4)table1(par_row_id, field_1, field_3, field_4, upper(field2))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM