建立索引的问题

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:55:25
SELECT airline, iflt, sum(adult+child)
FROM tbl_cstd
WHERE cki_date>=to_date('2008-09-02', 'YYYY-MM-DD') and cki_date<=to_date('2009-09-02', 'YYYY-MM-DD')
group by airline,iflt
order by airline ASC;
表中有百万级的数据,请问如果想对上述sql对应的表字段建立索引,应该建在cki_date还是airline那些字段?
换句话说,建立索引是对where中的条件字段建,还是对select中的字段建立索引呢?这个地方概念比较模糊,谢谢指点!

你要知道index在那些情况下可以使用,在那些情况下不能使用
建立的index当然要出现在where条件里,因为这里会进行数据的filter的
所以要在cki_date上建立索引,而且你这样写的where条件应该无法使用index,因为where后面跟not in,not exists,column <> value,column<value 或column>value等情况下都不能使用index。
建议你再cki_date上建立index后,在select后面加hint

select /*+ index(tbl_cstd index_name)*/后面一样 这样写,将index hint住
然后你看下执行计划

还有你要对tbl_cstd表进行分析