复合索引的问题

redshiliu 2013-08-09 12:14:48
看了好多文章都说复合索引只有按照索引创建的顺序组织where条件才能起效
但是我在sql2008上测试貌似只需要系统总能使用到索引
比如表A(c1,c2)创建索引c1,c2
查询条件where c2=? and c1=? 也能形成索引覆盖,是不是数据库会自动匹配?
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-08-10
  • 打赏
  • 举报
回复
自动匹配的,SQL引擎会自动选择最合适的索引..
發糞塗牆 2013-08-09
  • 打赏
  • 举报
回复
2008及以后版本,对where条件的顺序已经没有多大要求。符合索引对筛选性有要求
Andy__Huang 2013-08-09
  • 打赏
  • 举报
回复
where c2=? and c1=? 和 where c1=? and c2=? 应该是一样,没有先后顺序
lzw_0736 2013-08-09
  • 打赏
  • 举报
回复
查询条件where c2=? and c1=? 會自動匹配 如果是where c2=? 就用不到索引
Shawn 2013-08-09
  • 打赏
  • 举报
回复
#1.对于复合索引,统计信息只统计第一列的直方图,也就是说,SQL SERVER只会根据索引中第一列的值来决定走不走此索引。所以WHERE中最少要包含索引的第一列,才可能会走索引。 #2.WHERE中的条件,放在什么位置都一样,优化器会自动分析。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧