0

我是索引的初学者。我想为这个 SQL 表达式创建索引,这需要太多时间来执行,所以我想在哪些确切的列上创建索引?我正在使用 DB2 db,但没关系,我认为这个问题很笼统。

我的 SQL 表达式是:

select * from incident  where (relatedtoglobal=1) 
and globalticketid in (select ticketid from INCIDENT where status='RESOLVED')
     and statusdate <='2012-10-09 12:12:12'

我应该用这 5 列创建索引还是如何创建索引?

谢谢

4

1 回答 1

2

您的查询:

select * 
from incident  
where relatedtoglobal = 1 
  and globalticketid in ( select ticketid 
                          from INCIDENT 
                          where status='RESOLVED'
                        )
  and statusdate <='2012-10-09 12:12:12' ;

和里面的子查询:

select ticketid 
from INCIDENT 
where status='RESOLVED'
  • 上的索引(status, ticketid)肯定会提高子查询评估的效率,从而提高查询的效率。

  • 对于查询,除了前一个索引之外,您还需要一个索引。(relatedtoglobal, globalticketid)可能就足够了。

我不确定 DB2 引擎是否会/可以使用更复杂的索引。

  • 喜欢一个(relatedtoglobal, globalticketid) INCLUDE (statusdate)

  • 两个指标,一开(relatedtoglobal, globalticketid)一开(relatedtoglobal, statusdate)


DB2 文档不容易阅读,但有很多细节。从CREATE INDEX语句和实现索引开始。

于 2012-10-09T10:08:15.093 回答