【SQL】索引
1.定义
索引:一种数据结构,典型的是B-树,有键值对,键对应属性的某个值,值对应该键的存放位置。
建立索引的目的:加快查询速度
比如:
SELECT *
FROM Movies
WHERE studioName = 'Disney' AND year = 1990;
如果有studioName上的索引,则不需要搜索Movies中所有的元组,只要根据索引直接取出studioName = 'Disney' 的元组,再判断year值是否符合条件即可。
2.声明
CREATE INDEX 索引名 ON 表名(属性名)
CREATE INDEX YearIndex ON Movies(year);
多属性索引:
CREATE INDEX KeyIndex ON Movies(title, year);
多属性索引的属性顺序是有意义的,代表了索引的建立层次。如上面例子中,先是title再是year,则先在title上建立索引,可以找到指定的title集合,再在该集合上建立year的索引。
查询较多的属性应该放在前面。
删除索引:
DROP INDEX 索引名
3.索引的选择
建立索引并不一定能够加快查询的速度。
如果更新操作多,则在更新时需要更新索引,导致大量的操作。
数据库操作时,主要的时间都消耗在磁盘页面读取上。
两种数据存储的方式:
1.不是属性聚集的:同一个属性上相同的值随机存储在磁盘上,这样每取出一个目标元组都要读取一个磁盘页面。如果建立的索引中,查询出来的元组有很多个,则索引并没有多大的优势。
2.是属性聚集的:如果元组在建立索引的属性上聚集,则大量的目标元组都在一个磁盘页面上,采用索引可以大大加快查询速度。
如果不是属性聚集的,则在目标元组比较少时,索引才会节约时间。
采用索引时时间的消耗:
1.查询时:载入索引的磁盘页面,载入索引相应键值对中给出的磁盘页面
2.更新时:载入数据磁盘页面,写入数据磁盘页面,载入索引磁盘页面,写入索引磁盘页面
索引自动选择:
有很多数据库工具用于自动分析选择较好的候选索引。采用贪心法。每次选择一个能够带来正面收益的属性简历索引,之后继续评估剩下的属性。
【SQL】索引的更多相关文章
- SQL索引学习-索引结构
前一阵无意中和同事讨论过一个SQL相关的题(通过一个小问题来学习SQL关联查询),很惭愧一个非常简单的问题由于种种原因居然没有回答正确,数据库知识方面我算不上技术好,谈起SQL知识的学习我得益于200 ...
- SQL索引学习-聚集索引
这篇接着我们的索引学习系列,这次主要来分享一些有关聚集索引的问题.上一篇SQL索引学习-索引结构主要是从一些基础概念上给大家分享了我的理解,没有实例,有朋友就提到了聚集索引的问题,这里列出来一下: 其 ...
- 数据库性能优化:SQL索引
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...
- SQL索引一步到位
以下均非原创,仅供分享.学习!!! SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? S ...
- {好文备份}SQL索引一步到位
SQL索引一步到位(此文章为"数据库性能优化二:数据库表优化"附属文章之一) SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百 ...
- 转载:SQL索引一步到位
原文: http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文 ...
- SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)
SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一) SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭 ...
- SQL索引详解
转自:http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可 ...
- 数据库性能优化一:SQL索引一步到位
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...
- paip.sql索引优化----join 代替子查询法
paip.sql索引优化----join 代替子查询法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...
随机推荐
- UVA 11883 Repairing a Road(最短路径+暴力枚举)
You live in a small town with R bidirectional roads connecting C crossings and you want to go from c ...
- 轻量级权限管理系统——MVC基础
Microsoft Web 开发平台
- 【工作感悟】——xyb项目部署
[前言] 接手xyb项目维护有一段时间了,除了熟悉业务需求和开发环境外,还没有进行新需求的开发.前几天突然接到一个任务,要去发改委给他们部署一版最新的系统.本来事情也不大,也没有很难.但是本来是大屈. ...
- coredump分析
首先通过命令 gdb freeswitch core.60954进入gdb. 这里freeswitch 是产生coredump的可执行应用,core.60954是应用产生的coredump文件. 然后 ...
- 在浏览器中从FTP下载文件
public static class FTPHelper { /// <summary> /// 得到特定FTP目录的文件列表 /// </summary> /// < ...
- 不错的PDF开发库
C++库: 1,PDF类库 PoDoFo http://podofo.sourceforge.net/ PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库.它还包含一些小工具用来解析 ...
- VS 附加进程调试
1.在IIS 上新建一个项目,制定目录到 项目根目录. 2.制定IIS上指定 主机名称如: vk.com 3. 修改主机HOST 文件:C:\Windows\System32\drivers\etc ...
- js canvas captcha
js canvas captcha https://thejackalofjavascript.com/building-a-captcha-using-html5-canvas/ https://a ...
- TCP/IP Note1
TCP/IP(Transmission Control Protocol / Internet Protocol)是用于Internet的通信协议. 计算机通信协议:是指对那些计算机必须遵守以便彼此通 ...
- [洛谷P2590][ZJOI2008]树的统计
题目大意:一棵树,支持三个操作, $CHANGE\;u\;t:$ 把结点$u$的权值改为$t$ $QMAX\;u\;v:$ 询问从点$u$到点$v$的路径上的节点的最大权值 $QSUM\;u\;v:$ ...