where条件顺序与建索引顺序
查询时,如果数据量很大,where 后面的条件与建索引的顺序相同,也没有什么多少差别,聚集索引稍微快点; 但where 后面的条件与建索引顺序不同,速度会慢下来,到底慢多少,不同的机器会不一样,没有绝对的说法。
MSSQL引擎首先对条件进行优化,优化以后再查询。
1,还是那句,先看执行计划。
2.2008的话,对where的顺序它会自己优化,测试过,顺序对执行计划没有影响,不过2005好像有。所以从规范化来说,还是把筛选性高的放在where的前面,而不是考虑是否聚集索引
3.对于建立索引,就有讲究了,统计信息只看索引的第一列,所以创建索引时,筛选性高的那列应该放到索引定义的第一位。
#1.WHERE后面的条件只要一模一样,写在哪儿都是无所谓的。相同环境下,生成的执行计划也是一样的。
#2.至于建立索引的顺序,就有讲究了:1.复合索引的第一个字段最重要,SQL SERVER只生成复合索引第一个字段的统计信息,那么优化器也只能根据复合索引的第一个字段的统计信息来优化查询。2.当你自己从业务上了解了数据分布后,怎样写SQL和怎样建立索引就是一门学问了。有时候要根据SQL语句建立索引,有时候要根据已有索引更改SQL语句(用临时表等方法)。
#3.要想学会创建适合业务的索引,除了业务中的数据分布,你要了解索引的结构(聚集和非聚集),高选择性的概念,数据在页上的存储方式,及看得懂执行计划。
sp_help '表名',拉到最下,有索引的定义
--指的fieldA,fieldB的顺序,也就是说:把fieldA这个字段排在第一位,是要考虑考虑的
CREATE INDEX IX_tablename_fieldA_fieldB ON dbo.tablename
(
FieldB
)
GO
索引顺序有讲究,where一般没有,不过2005及以下版本听说是有的,不过我没环境,你最好试一下
1、那个是符合索引。
2、所谓的索引顺序,其实是复合索引的顺序,两个索引之间没啥顺序可言,具体由sql查询优化器去根据统计信息及查询语句,和当前资源,选择使用哪个索引而已。
1、程序端的sql语句中,mssql对where的顺序会优化。不存在“ 1=1 ”的问题;也不存在“聚集 and 非聚集”的顺序问题。
2、mssql表中的索引顺序,对查询效率有影响,具体的需要结合实际业务——能够将查询结果最小化的索引放置在前面。
(个人见解——其实大多数业务中,应该是主键—聚集索引—非聚集索引)
3、符合索引的“字段A、字段B”——不说了,这个清楚。
主键仅仅为了确保业务上的数据可标识性,实际上可以没有聚集索引(我就改过很多表,把主键上的聚集索引移到别的字段上,效果不错),但是很多业务又真的需要经常使用主键做一些适合聚集索引特性的操作,所以可能这也是微软默认把主键带有聚集索引的理由之一,而且聚集索引能组织数据。对性能和维护来说很重要
相关文章
- 学习MongoDB 八: MongoDB索引(索引限制条件)(二)
- sql 索引
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
- 学习MongoDB 八: MongoDB索引(索引限制条件)(二)
- ElasticSearch中RESTFUL API(创建索引、增删改查、DSL搜索、高亮显示、聚合)
- 子域名访问计数(哈希表、字符串、索引)
- 分布式系列教程(31) -ElasticSearch倒排索引
- MYSQL索引【学习总结】
- 索引失效原因总结
- Hbase 学习(九) 华为二级索引(原理)
- 【索引】什么是索引
- mysql 索引
- MySQL 优化之 ICP (index condition pushdown:索引条件下推)
- es删除索引
- 《高并发Oracle数据库系统的架构与设计》一2.4 索引分裂
- DBCC DBREINDEX重建索引提高SQL Server性能
- 浅析Object.assign()基本用法(对象合并、同名属性覆盖、仅1个参数时直接返回、target不是对象会转成对象、源对象位置为非对象时不同的处理规则-字符串的特殊情况、拷贝的属性限制)及需要注意的点(浅拷贝、同名属性替换、数组的处理-把索引当属性替换、取值函数先取值再拷贝)和常见应用(给对象添加属性、合并多个对象、给属性设置默认值)
- 聚集索引和取消外键,外键影响在大并发下的性能.删除外键
- (4.17)什么情况下应该使用索引
- (4.12)数据库列式存储 sql server列存储索引
- (3.3)常用知识-索引使用、维护与填充因子
- mysql 索引学习--多条件等值查询,顺序不同也能应用联合索引啦