>데이터 베이스 >MySQL 튜토리얼 >MySQL索引设计一些策略_MySQL

MySQL索引设计一些策略_MySQL

WBOY
WBOY원래의
2016-06-08 08:50:321338검색

前言

索引加快了检索的速度,但是却降低了数据列里插入、删除以及修改数值的速度。也就是说,索引降低了许多涉及写入的操作速度。之所以出现这种情况,是由于写入一条数据不仅仅是要写入到数据行,还需要所有的索引都作出相应的改变如更新或是重新编排。MySQL在为检索生成一个执行方案时候,要仔细对索引进行计算,创建过多的索引对查询优化程序就加上了更多的工作,而且当你有太多的索引的时候,MySQL还有可能无法选出最好的索引来使用。于是在选择索引的时候,需要采取一些策略。

策略1

在选择索引列的时候,尽量为用搜索、分类或者分组的数据列编制索引,不要为作为输出的数据列编制索引。换句话说,最合适有索引的数据列是那些在where字句中出现的数据列,在连接字句中给出的数据列、或是在order by或是group by子句中出现的数据列。

策略2

综合考虑数据列的维度势。数据列的维度,等于它所容纳的非重复值的个数。

策略3

尽量选择短小的值进行索引
短小的值可以让比较操作更快完成,加快索引查询速度。
短小的值可以让索引的体积更小,减少磁盘I/O活动
短小的键值意味着键缓存里的索引块可以容纳更多的键值,让MySQL可以在内存中容纳更多的键,这样较少了I/O活动的概率。
InnoDB存储引擎采用的聚族索引。所谓的聚族索引就是把数据行和主键索引集中保存在一起,其他的索引都是二级索引,它们保存着主键值和二级索引值。对于二级索引查找过程是先通过二级索引找到主键,然后通过主键找到对应的数据。选择短小的值进行索引,可以减少二级索引占据的空间。

策略4

为字符串值的前缀添加索引

如果打算给一个字符串列添加索引,尽可能的给出前缀长度。

策略5

不要建立过多的索引

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.