Oracle查询语句优化

来源:百度知道 编辑:UC知道 时间:2024/05/11 02:30:37
为什么“Select Count(1) From USER01.V_ZALSK_TH ”和
“Select Count(1) From USER01.V_ZALSK_TH Where JX='121' ”语句非常快,而Select Count(1) From USER01.V_ZALSK_TH Where JX='121' and ZACS>0 非常慢啊,只是多加了一个条件 ZACS>0就要3分多钟的时间。数据库表ZALSK才40多万条记录啊!急!

假设楼主应该建立了合适的索引了(这个是起码的了)
不过,oracle里面如果查询里面有多个索引列,如果一个是索引列的索引等级相同,那么就首先会采用where最前面的索引

where用< ,>等比较运算符是不一定会让索引失效的,

试试把jx='121 与ZAXS>0换位

oracle 中 where 后尽量不要使用<,>等比较的运算符.只要使用了,索引就会失效,变成了全表扫描.所以查询速度很慢,尤其是对数据量很大的情况.

看你的语句,应该是满足jx='121'的记录比较多,把jx和zacs两个字段建立一个索引可以优化

Select Count(1) From USER01.V_ZALSK_TH 应该是使用rownum进行查询,
Select Count(1) From USER01.V_ZALSK_TH Where JX='121' 是根据jx这列的索引进行查询。
Select Count(1) From USER01.V_ZALSK_TH Where JX='121' and ZACS>0
这个估计是索引使用的问题,导致速度很慢。请核对是否使用合适的索引。

数字型,可以使用〉 < 等操作符,没有啊,索引也不一定会失效

是否是索引的原因 建立合适的索引试试!