SQL查询优化--索引的原理及常见类型
查询优化概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
随着信息时代的来临,数据库已经用到了越来越多的生产环境中。使用数据库的主要目的就是方便快速的使用数据,数据库中的所有操作都离不开查询这个环节,那么需要如何操作才能才能优化数据库的性能呢?其主要措施之一就是提高查询的性能。查询性能优化的手段有两个,一个是如何组织数据逻辑顺序使得查找的步数最小,一个是如何组织数据的物理存放,使得尽量少的读写硬盘。
索引基本原理
概念:索引就是通过对数据表的数据建立类似图书目录和图书馆图书索引卡一样的“数据目录”。
案例需求:图书馆最新购买了100万本图书.为了更便捷的查找图书,管理员应该如何去做?
1. 给图书进行分类,同类的图书放在同一个书架;
2. 给图书进行编号,编号由类别编号+书编号+书架号组成;
3. 将编号制作成卡片放到卡片柜里,一个卡片柜放置一个类别的卡片;
案例需求:读者如果希望找到自己需要的图书该如何做呢?
1. 根据图书类别查找到相应的卡片柜;
2. 在卡片柜里按照图书名称查找对应卡片和书籍编号;
3. 根据卡片的书籍编号,找到图书馆里的书架号,从而找到相应书籍;
索引原理示意
案例需求:希望在数据库中查找Candy的信息
索引主要特性
索引特征:当表中的数据发生变化的时候,变化的数据可能同时涉及索引中定义的列,那么索引中的数据也会产生更变。这样会导致数据变更维护的开销增加。所以,索引的建立应该按需而定,不能盲目
使用索引的时机:
数据量越大越适合用索引
选择性越好越适合用索引
数据表数据变化小适合使用索引
创建索引的过程
新建索引
为索引命名
选择索引列
完成索引的创建
索引常见类型:聚集索引和非聚集索引、组合索引、唯一索引、主键索引、聚集索引。
聚集索引
聚集索引不是通过表中记录地址来定位到表,索引本身就包含表,表中的数据按照索引字段进行排序
非聚集索引
非聚集索引,是通过索引表中记录地址定位到数据表,
组合索引
组合索引,就是包含多个字段的索引
唯一索引
可以确保索引列中不包含重复的值,创建唯一索引减少了查询所需遍历的记录,提高了查询效率
主键索引
在SQL Server中为表定义主键时将自动创建主键索引
主键索引的特征
主键索引是唯一索引的特殊类型
如果表未创建聚集索引,且在创建主键约束时未指定索引类型,主键约束会自动创建聚集索引
主键索引要求主键中的每个值都是唯一的。
建立索引表的目的:无需二次定位,可以直接定位数据
转载于:https://blog.51cto.com/yueyuanyuan/309508