查询时在条件复合索引加其它查询,会不会优化?
如,在表employee列 yymmdd ,empid上 建立了复合索引,查询时,在 where 加了复合索引,还加其他条件,会不会使用复合索引进行优化。

select * from employee where yymmdd='2010-12-29' and empid='1222' and isOK=1 

解决方案 »

  1.   

    符合索引一般在比较大小的时候效果比较明显 比如>< between and
    你的字段一个开始日期 一个结束日期比如
      

  2.   

    IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
    GO
    CREATE TABLE TB
    (
       ID INT,
       日期 DATETIME, 
       姓名 NVARCHAR(20),
       产量 INT
    )
    INSERT INTO TB
    SELECT 1,'2010-10-09','张三',10 UNION ALL
    SELECT 2,'2010-10-09','李四',20 UNION ALL
    SELECT 3,'2010-10-09','王五',30 UNION ALL
    SELECT 4,'2010-12-10','老六',40 UNION ALL
    SELECT 5,'2010-12-10','李四',50 UNION ALL
    SELECT 6,'2010-12-10','王五',60--非聚集索引
    create index idex_日期_姓名 on TB(日期,姓名)
    select * from TB where 日期='2010-10-09' and 姓名='张三' 
    --执行计划是table scan--聚集索引
    create clustered index idex_日期 on TB(日期)
    select * from TB where 日期='2010-10-09' and 姓名='张三' 
    --执行计划是clustered index seek
    我的测试结果........
      

  3.   

    select * from employee where yymmdd='2010-12-29' and empid='1222' and isOK=1  那么下面那条语句呢?
    select * from employee where empid='1222'  and yymmdd='2010-12-29' and isOK=1  会优化吗??
     #2楼 得分:0回复于:2010-12-29 11:03:55会的,不放心可以看计划,如果是非聚集索引,会先根据索引条件筛选出一部分数据,再执行其它条件的筛选。 
     
    刚才楼上这位这样说。是否可以说得明白点呢?