51Testing软件测试论坛

标题: sybase的索引查询时使用了is null,索引仍有效? [打印本页]

作者: Donly    时间: 2012-7-4 13:53
标题: sybase的索引查询时使用了is null,索引仍有效?
在网上看了很多资料,都说在索引列使用is null或则is not null,索引会失效,但是今天自己试了一下,发现:

Select a.Circuit_Id,a.State_Name ,a.Status from tCircuit a  
where a.Spec_Id = 3 and a.Service_Number is null---这句会使用Service_Number 上的索引

Select a.Circuit_Id,a.State_Name ,a.Status from tCircuit a  
where a.Spec_Id = 3 and a.Service_Number is not null ----这句不会使用Service_Number上的索引,会使用表扫描

Select a.Circuit_Id,a.State_Name ,a.Status from tCircuit a  
where a.Spec_Id = 3 and a.Service_Number is not null and a.Service_Number like 'LDC%' --这句会使用Service_Number 上的索引

以下例子中,C1列有索引,c2列无索引:
select t1.c1 from t1  where  t1.c1 is   null使用了c1的索引
select t1.c1,c2 from t1  where  t1.c1 is  null 使用了c1的索引
select t1.c1,c2 from t1  where  t1.c1 is not  null,使用表扫描
select t1.c1 from t1  where  t1.c1 is not  null 使用索引

这个要怎么理解呢?我完全糊涂了:-( ,还请各位高人指教
作者: msnshow    时间: 2012-8-7 21:37
没用过sybase




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2