看了好多文章都说复合索引只有按照索引创建的顺序组织where条件才能起效
但是我在sql2008上测试貌似只需要系统总能使用到索引
比如表A(c1,c2)创建索引c1,c2
查询条件where c2=? and c1=? 也能形成索引覆盖,是不是数据库会自动匹配?

解决方案 »

  1.   

    查询条件where c2=? and c1=? 會自動匹配如果是where c2=? 就用不到索引
      

  2.   

    where c2=? and c1=? 

    where c1=? and c2=? 
    应该是一样,没有先后顺序
      

  3.   

    2008及以后版本,对where条件的顺序已经没有多大要求。符合索引对筛选性有要求
      

  4.   

    #1.对于复合索引,统计信息只统计第一列的直方图,也就是说,SQL SERVER只会根据索引中第一列的值来决定走不走此索引。所以WHERE中最少要包含索引的第一列,才可能会走索引。
    #2.WHERE中的条件,放在什么位置都一样,优化器会自动分析。
      

  5.   

    自动匹配的,SQL引擎会自动选择最合适的索引..