SQL索引--基础理论
1、索引的定义
索引是数据库表中一列或多列的值进行的一种排序,用于快速找出在某一列中特定的值。
2、索引的原理
如果不使用索引,则通常的查询数据中,需要对表中数据做一一对应的比较,直到找出所有相关的行为止。也就是说,当数据库表中数据量越大,则查询效率越低;而索引则是迅速到达一个位置,查询数据文件,而不必查询所有数据。简单来讲,索引即如目录一样,先找到对应的目录,然后根据保存在索引中的rowid,快速找到所需的对应数据。
3、索引的特点
a.优点:加快了查询的速率,这是索引最重要的意义所在
加快了表与表之间的链接,特别是在数据的参照完整性方面(参照完整性是通过定义外键与之间的对应关系来实现的),有特别的意义
在使用分组和排序子句进行查询时,也可以显著减少查询中分组和排序的时间
b.缺点:在创建和维护索引时,需要耗费时间,而且伴随着数量的增加,其耗费的时间也在增加
索引需要占据一定的磁盘空间。除了数据表占据数据空间之外,每一个索引都要占据一定的物理空间,当随着数据量越来越大的时,索引所占据的空间甚 至大于数据空间在对数据表进行增、删、改的时候,索引也需要进行动态的维护,这就增加了系统的负担,降低了维护的速度。
4、索引的分类
a.普通索引和唯一索引
普通索引:允许数据表列中有空值和重复;
唯一索引:允许数据表列中有空值,但不许重复。主键是一种特殊的唯一索引,因为主键不许为空;
写法:create index 索引名 on 表 (字段名)--------------普通索引
create unique index 索引名 on 表 (字段名)-------唯一索引
b.单列索引和组合索引
单例索引:一个索引只指定一个列,一个表中可以有多个单例索引
组合索引(复合索引):一个索引列包含了表中多个字段,最多可以包含16个字段,只有在查询条件中使用到左边字段时,组合索引才会有效。组合索引坚持一个原则,使用频率越高的字段,排在最前面。
写法:create unique index 索引名 on 表 (字段名1,字段名2,...)----组合索引
c.全文索引
全文索引类型为fulltext,在定义列的值上支持全文查找,允许列插入重复或空值,全文索引可以在char、varchar、text、clob等类型的列上创建,其表现形式类似于like函数,而全文索引主要通过contains来实现。例如 select * from 表名 where contains((字段1,字段2),'姚明')。另外,在MySQL中只有MyISAM存储引擎支持全文索引
5、索引的设计原则
索引的设计是为了提高数据的查询速率,但是如果不好的索引设计不仅会占据大量的磁盘空间、还会对系统性能造成很大的影响。
1、数据量较少的数据库表,不必添加索引。因为遍历索引的时间可能比普通查询的时间都要长,这时候的索引不会产生任何优化的效果。
2、经常进行增、删、改的数据库表,尽量少的添加索引。因为每一次对表的DDL操作,在对表数据做更改的同时,相应的索引也会进行更新和调整。
3、对于条件表达式中经常用到的字段,但其不同值较少的字段则没必要添加索引。比如,在性别字段,只有‘男’、‘女’,则没必要添加索引,否则的话不仅会降低更新数据时候的性能,而且对查询的时候也没有任何性能上的提高。
4、在频繁使用order by或group by的字段上添加索引,如果是多个字段的话,可以使用组合索引。
5、当某个字段有唯一性(unique)特征时,可以使用唯一索引。不仅可以确保数据的完整性,也提高了查询性能。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
正如 火狐总裁Tristan Nitot 在解释Firefox成功原因时,Tristan Nitot说:“在近6年的时间里,Web技术不断发展的同时,浏览器却并未有任何改善,因为微软已经睡着了。”
而我也相信,如今的技术每天都在更新,如果我们今天睡着,明天我们就已经落后了。
我的每一句话都是自己手打,我不能保证每一句话的正确,但我保证每一个字都已经用心。------愿我们一起进步
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索引有两种,聚集索引和非聚集索引 ...
随机推荐
- Android网络开发之Volley--Volley基本用法JsonObjectReques(二)
1.JsonObjectRequest用法 用法和StringRequest基本相同,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置JsonObjectRequest对象 ...
- Total Highway Distance
Total Highway Distance 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi and Little Ho are playing a ...
- 网页解析的全过程(输入url到展示页面)
1.用户输入网址,浏览器发起DNS查询请求 用户访问网页,DNS服务器(域名解析系统)会根据用户提供的域名查找对应的IP地址. 域名解析服务器是基于UDP协议实现的一个应用程序,通常通过监听53端口来 ...
- Python核心编程第二版(中文).pdf 目录整理
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
- 使用eclipse和JavaFX Scene Builder进行快速构建JavaFX应用程序
http://blog.csdn.net/wingfourever/article/details/7726724 使用eclipse和JavaFX Scene Builder进行快速构建JavaFX ...
- (简单) POJ 1511 Invitation Cards,SPFA。
Description In the age of television, not many people attend theater performances. Antique Comedians ...
- 解决在某些IE浏览器下字符乱码的问题
习惯上我们写字符声明都是 <meta charset="utf-8"> 在绝大多数浏览器都没有问题,但是在操蛋的IE上有时候会出现编码错误!! 解决方案: <me ...
- Eclipse 打开js文件时出现 Could not open the editor...
选择 window-->General-->Editors-->File Associations -->(在右边上面的框中选择jsp或者你打开的文件类型)-->(然后在 ...
- java系列--过滤器
在web.xml配置过滤器:过滤器一定要放在所以Servlet前面 过滤器的生命周期: 过滤器的应用: 1.编码格式 2.权限验证 3.数据库关闭
- 从移动硬盘开机,引导VHD(Win10)
STEP 1 USB隨身碟能順利Boot Win10,點擊[主引導記錄]來設定Windows NT6.x引導程序與啟動記錄. STEP 2 事實上,格式化時MBR的類型預設就是Windows NT 6 ...