查询时,如果数据量很大,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”——不说了,这个清楚。

主键仅仅为了确保业务上的数据可标识性,实际上可以没有聚集索引(我就改过很多表,把主键上的聚集索引移到别的字段上,效果不错),但是很多业务又真的需要经常使用主键做一些适合聚集索引特性的操作,所以可能这也是微软默认把主键带有聚集索引的理由之一,而且聚集索引能组织数据。对性能和维护来说很重要

where条件顺序与建索引顺序的更多相关文章

  1. [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序

    文章转自:http://www.cnblogs.com/zhengyun_ustc/p/slowquery2.html 写在前面的话: 之前曾说过"不要求每个人一定理解 联表查询(join/ ...

  2. MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序

    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序   What's Index ? 索引就是帮助RDBMS高效获取数据的数据结构. 索引可以让我们避免一行一行进行全表扫描.它的 ...

  3. 查找->静态查找表->分块查找(索引顺序表)

    文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...

  4. ISAM Indexed Sequential Access Method 索引顺序存取方法

    ISAM Indexed Sequential Access Method 索引顺序存取方法 学习了:https://baike.baidu.com/item/ISAM/3013855 是IBM发展起 ...

  5. B-tree R-tree B+-tree indexes 索引顺序存取方法 ISAM MySQL实现拓展ISAM为MyISAM

    High Performance MySQL, Third Edition by Baron Schwartz, Peter Zaitsev, and Vadim Tkachenko http://d ...

  6. ms sqlserver数据库建索引

    索引分类:从物理结构上可分为两种:聚集索引和非聚集索引 (此外还有空间索引.筛选索引.XML索引) 因为聚集索引是索引顺序与物理存储顺序一致,所以只能建一个. 聚集索引就是把数据按主键顺序存储: 因为 ...

  7. MySQL索引(二):建索引的原则

    在了解了索引的基础知识及B+树索引的原理后(如需复习请点这里),这一节我们了解一下有哪些建索引的原则,来指导我们去建索引. 建索引的原则 1. 联合索引 我们可能听一些数据库方面的专业人士说过:&qu ...

  8. Mongodb 3 查询优化(语句优化、建索引)

    一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mon ...

  9. Python开发应用之-SQL 建索引的几大原则

       SQL 建索引的几大原则: 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配,比如a = 1 and b = ...

随机推荐

  1. STL编程:C++的忠告!

    Copy别人的,有少量修改,可以做为一下参考! C++之父Bjarne Stroustrup 写的 The C++ Programming Language (Special Edition) 中各章 ...

  2. mvc cshtml 字符串操作

    @using System.Text; @{ ; string str=""; StringBuilder sb = new StringBuilder(); } @foreach ...

  3. CorelDRAW X8官方正版特惠下载

    CorelDRAW X8自发布以来,价格居高不下,这也使一众忠粉望而却步,之前看过CorelDRAW做活动,都是X6\X7这些比较早的版本,比较新的版本也没做什么优惠,不过还好看了一下,CorelDR ...

  4. codeforces 789 A. Anastasia and pebbles

    链接 A. Anastasia and pebbles 题意 这个人有两个口袋,有n种类型的鹅卵石,每种鹅卵石有wi个,每次可以放同一种最多k个,每次不能把不同类型的鹅卵石放进同一个口袋,但是她可以同 ...

  5. 06 Django组件-cookie与session

    一.会话跟踪技术 1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而 ...

  6. Unity3D_脚本_获取对象的位置_碰撞后加一段音乐_旋转对象_使物体随机运动

    获取对象的位置(Position) 在代码中加上 public Rigidbody cd;cd = GetComponent<Rigidbody>();Vector3 m=cd.trans ...

  7. Javascript中的null和 undefined

    Javascript Undefined vs NULL Many a times we often get confused on whats the difference between UNDE ...

  8. Vue学习之路第十七篇:全局过滤器的使用

    1.过滤器 ①:Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:插值表达式和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 Ja ...

  9. input标签处理多文件上传

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  10. C语言求大数的阶乘

    我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,该如何计算? 当一个数很大时,利用平常的方法是求不出来它的阶乘的,因为数据超出了范围.因此我们要用数组来求一个大数的阶乘,用数组的每位表示结果的 ...