您的位置:首页 > 数据库

数据库性能优化之索引设计原则及其分析

2016-09-21 18:25 459 查看
索引是用来快速的寻找那些具有特定值的记录,所有的索引都以树的形式保存。

一、分析索引的效率:

1、索引数据列可以使用短数据列的时候就不要用长的。因为使用较短的值作为索引可以带来性能的显著提高,不仅可以提高查询速度,而且,短的索引值也比长的索引值处理的更快一些;

2、固定长度的数据列速度比较快,but也意味着占用的空间也比较大。CHAR(n)列的每个值(即使是空值)也会占用n个字符,VARCHAR(n)列占用的空间比较小,因为它需要分配必要的字符个数,用于存储值,加上一两个字节来存储值的长度,因此,CHAR和VARCHAR列之间进行选择的时候,实际上是时间和空间的对比,如果速度是主要的参考因素,那么可以使用CHAR数据列来提升性能;如果空间比较重要的话,那么久使用VARCHAR数据列。

3、
把索引数据列的定义成不能为空(NOT NULL)。
为什么这样做呢?因为这样做会使得处理速度更快,需要的存储更少,在某些时候,还简化查询,而且不需要再检查值是否为NULL属性。

4、查询操作中的WHERE语句的数据提取。

例如:SELECT * FROM user WHERE name='XXX'  

假如我们事先为字段name建立索引,将可以提升查询的速度。

5、查询操作中的ORDER_BY语句的数据提取。

当我们以特定的顺序显示数据的时候,如果能先为基准字段建立索引,那么将提高速度。

例如:SELECT user_id FROM user ORDER BY user_id 

假如我们先为user_id 创建索引,则能提高查询速度。

6、GROUP BY语句的数据分组

当我们以特定的分组显示数据的时候,如果能先为基准字段建立索引,那么将提高速度。

例如:SELECT Hit_fee,avg FROM ad GROUP BY Hit_fee

假如我们先为Hit_fee
创建索引,则能提高查询速度。

在数据库设计中,索引是提高速度的关键因素,无论表的简单与复杂,如果你的速度慢,可以花一些时间去分析采用哪些索引进行优化应用。

二、索引的设计原则

1、使用唯一的索引。唯一的索引字段的值是唯一的,那么可以通过该索引来确定某条信息,比如,学生表中的学号的值是唯一的,那么我们可以为该字段建立索引,这样可以很快的确定学生的信息。

如果你使用姓名所谓索引,姓名会有重复的可能,那么久会降低查询速度。

2、为经常排序、分组和联合操作的字段建立索引。经常需要ORDER_BY,GROUP_BY、DISTINCT和UNION等操作的字段(例如:按照按查看次数排热度,按时间排序排最新),如果为其建立索引,那么就可以提高速度。

3、为常作为查询条件的字段建立索引。如果你经常把某一个字段用来作为查询条件,那么你你可以为这个字段建立索引,这样可以提高整个表的查询速度,也就是说优先为出现在WHERE句子中的字段建立索引,而不是在SELECT后面的字段。

4、不要过度的使用索引。每个额外的索引都需要占用磁盘空间并降低写操作的性能。索引越多,需要的磁盘空间就越大,同时,修改表的时候,对索引的重构和更新显得相当麻烦,因此索引的数目并不是越多越好。

5、尽量使用短索引。如果索引的值很长,那么查询速度回受到影响。短索引的进行全文检索需要花费的时间比长索引需要花费的时间要少得多。

但是如果涉及到需要对BLOB、TEXT或者很长的字符串这样的大文本类型建立索引的话,我们使用哈希索引或者前缀索引。

5.1、前缀索引:对这列的前几个字符建立索引,而不是全部。索引的选择是指索引中不同的值得个数和所有行数的比率,如果你选择的比较好,可以过滤掉更多的行,前缀索引选择的好的话,能够得到很高的性能提升,另外,MySQL不允许在全部长度上建立索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐