SQL查询中关于索引使用的笔记
建表KeyLevelStat (无主键),2个索引:
CREATE TABLE KeyLevelStat(
[Date] [int] NOT NULL,
[Num] [varchar](8),
[R0] [decimal](6, 3) NULL,
)
GO
CREATE CLUSTERED INDEX IX_KeyLevelStatDate ON KeyLevelStat (Date DESC)
CREATE CLUSTERED INDEX IX_KeyLevelStatNum ON KeyLevelStat (Num DESC)
IX_KeyLevelStatDate clustered Date(-)
IX_KeyLevelStatNum nonclustered Num
然后插入几万条数据进行查询测试,并查看执行计划。
1、where中使用到非聚集索引:
A:select date,num,r0 from KeyLevelStat where num ='600417'
B:select date,num,r0 from KeyLevelStat where num ='600417' or num ='000419'
C:select date,num from KeyLevelStat where num ='600417' or num ='000419'

A与B的执行计划完全一样。
B比C多select了一个R0字段(无索引),导致聚集索引查找。
黄色的“等于”换成“大于”,结果是一样的。
2、where中使用到聚集索引:
A:select date from KeyLevelStat where date >20130912
B:select date,num,r0 from KeyLevelStat where date >20130912

A与B的执行计划完全一样。
3、总结:
1、or其实可以使用到索引的。但大于不行。
2、select的字段也会影响索引使用。(当表同时有聚集索引和非聚集索引时)
select包含任意无索引的字段,或者where包含任意无索引的字段,都会扫描聚集索引。
若where没用到聚集索引但用到了非聚集索引A,当select包含“A索引的字段 + 聚集索引字段”之外的字段时,会使用聚集索引而使where用到的索引无效
推测原理:
1、无索引的字段需要根据聚集索引来定位,才能select出来。
2、非聚集索引中记录了聚集索引字段的值,故能直接select出来。
SQL查询中关于索引使用的笔记的更多相关文章
- SQL Server中的索引
1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Serve ...
- 转载: SQL Server中的索引
http://www.blogjava.net/wangdetian168/archive/2011/03/07/347192.html 1 SQL Server中的索引 索引是与表或视图关联的磁盘上 ...
- 分布式SQL数据库中部分索引的好处
在优锐课的java学习分享中,探讨了分布式SQL数据库中部分索引的优势,并探讨了性能测试,结果等. 如果使用局部索引而不是常规索引,则在可为空的列上(其中只有一小部分行的该列不具有空值),然后可以大大 ...
- SQL查询中in、exists、not in、not exists的用法与区别
1.in和exists in是把外表和内表作hash(字典集合)连接,而exists是对外表作循环,每次循环再对内表进行查询.一直以来认为exists比in效率高的说法是不准确的,如果查询的两个表大小 ...
- SQL Server中的索引结构与疑惑
说实话我从没有在实际项目中使用过索引,仅知道索引是一个相当重要的技术点,因此我也看了不少文章知道了索引的区别.分类.优缺点以及如何使用索引.但关于索引它最本质的是什么笔者一直没明白,本文是笔者带着这些 ...
- sql server中的索引详情
什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...
- 【译】索引进阶(十一):SQL SERVER中的索引碎片【上篇】
原文链接:传送门. 第十章节我们分析了索引的内部结构.有了这些关于索引结构的知识,我们便可以分析索引碎片了:其产生的原因,如何防止,以及何时可以不去关注它们. 一些背景知识 / 复习 以下知识对于理解 ...
- sql查询未走索引问题分析之查询数据量过大
前因: 客户咨询,有一个业务sql(代表经常被执行且重要),全表扫描在系统占用资源很高(通过ash报告查询得到信息) 思路: 1.找到sql_text,sql_id 2.查看执行计划 3.查询sql涉 ...
- (转)SQL Server中的索引结构与疑惑
说实话我从没有在实际项目中使用过索引,仅知道索引是一个相当重要的技术点,因此我也看了不少文章知道了索引的区别.分类.优缺点以及如何使用索引.但关于索引它最本质的是什么笔者一直没明白,本文是笔者带着这些 ...
随机推荐
- Android 编程下的 Secret Code
我们很多人应该都做过这样的操作,打开拨号键盘输入 *#*#4636#*#* 等字符就会弹出一个界面显示手机相关的一些信息,这个功能在 Android 中被称为 Android Secret Code, ...
- Playmaker Input篇教程之引入的核心概念
Playmaker Input篇教程之引入的核心概念 Playmaker Input引入的核心概念 Playmaker引入了4个核心概念:状态机.动作.变量和事件.了解它们是学习操作Playmaker ...
- App Store上下载和安装Xcode
App Store上下载和安装Xcode Xcode的下载和安装 要编写一个Sprite Kit程序,需要使用到Xcode开发工具.本节将主要讲解此工具的两种下载和安装方式:一种是在App Store ...
- cocos2d ccmenulabel
// // TestMenu.hpp // mario // // Created by sun on 15/12/22. // // #ifndef TestMenu_hpp #define Tes ...
- unity textFilde
#pragma strict private var editUsername:String; private var editPassword:String; private var editSho ...
- 【BZOJ】1038: [ZJOI2008]瞭望塔
http://www.lydsy.com/JudgeOnline/problem.php?id=1038 题意:给出n个x轴各不相同的二维整点,且升序,n<=300,坐标绝对值<=10^6 ...
- linux 快捷键
截图: 打印: 全屏截图 alt+打印:窗口截图 shift+打印:区域截图 ctrl+打印:截图到剪贴板 显示桌面: ctrl+super+d 最大化最小化窗口 ctrl+alt+up/down 转 ...
- 递归,回溯,DFS,BFS的理解和模板【摘】
递归:就是出现这种情况的代码: (或者说是用到了栈) 解答树角度:在dfs遍历一棵解答树 优点:结构简洁缺点:效率低,可能栈溢出 递归的一般结构: void f() { if(符合边界条件) { // ...
- 安装Bind过程中提示丢失MSVCR110.dll的解决办法
前几天在线安装Visual Studio 2012 Update 3,由于在线安装需要不断下载安装文件,时间很长,后来等不下去,就取消了,不幸的是VS启动不了了,弹出“devenv.exe – 系统错 ...
- 《GK101任意波发生器》升级固件发布(版本:1.0.2.build126)
一.固件说明: 硬件版本:0,logic.3 固件版本:1.0.2.build126 编译日期:2014-08-23 ====================================== 二. ...