数据库索引优化方法都有哪些

白癜风怎么能看好 http://disease.39.net/bjzkbdfyy/221105/12216570.html

  我们在前几期的文章中给大家简单介绍了MySQL数据库索引的一些基础知识等内容,而本文我们就再来学习一下,数据库索引优化方法都有哪些。

  独立的列

  在进行查询时,索引列不能是表达式的一部分,也不能是函数的参数,否则无法使用索引。

  多列索引

  在需要使用多个列作为条件进行查询时,使用多列索引比使用多个单列索引性能更好。例如下面的语句中,好把actor_id和film_id设置为多列索引。

  索引列的顺序

  让选择性强的索引列放在前面。

  索引的选择性是指:不重复的索引值和记录总数的比值。大值为1,此时每个记录都有的索引与其对应。选择性越高,每个记录的区分度越高,查询效率也越高。

  例如下面显示的结果中customer_id的选择性比staff_id更高,因此好把customer_id列放在多列索引的前面。

  前缀索引

  对于BLOB、TEXT和VARCHAR类型的列,必须使用前缀索引,只索引开始的部分字符。

  前缀长度的选取需要根据索引选择性来确定。

  覆盖索引

  索引包含所有需要查询的字段的值。

  具有以下优点:

  索引通常远小于数据行的大小,只读取索引能大大减少数据访问量。

  一些存储引擎(例如MyISAM)在内存中只缓存索引,而数据依赖于操作系统来缓存。因此,只访问索引可以不使用系统调用(通常比较费时)。

  对于InnoDB引擎,若辅助索引能够覆盖查询,则无需访问主索引。

  索引的优点

  大大减少了服务器需要扫描的数据行数。

  帮助服务器避免进行排序和分组,以及避免创建临时表(B+Tree索引是有序的,可以用于ORDERBY和GROUPBY操作。临时表主要是在排序和分组过程中创建,不需要排序和分组,也就不需要创建临时表)。

  将随机I/O变为顺序I/O(B+Tree索引是有序的,会将相邻的数据都存储在一起)。




转载请注明:http://www.aierlanlan.com/rzdk/7173.html