MySQL创建索引原则

记录:索引用于快速的查询某些特殊列的某些行。如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关的行。表越大,查询的成本越大。如果表有了索引的话,那么 MySQL 可以很快的确定数据的位置,而不用查询整个表格。这比顺序的读取每一行要快的多。索引就像我们查字典时的目录一样,我们通过查询字典的目录,可以定位到某一行数据。

索引创建的原则:
  • 为经常出现关键字order by、group by、distinct后面的字段,建立索引。
  • 在这些字段上建立索引,可以有效的避免排序操作,如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
  • 在union等集合操作的结果集字段上建立索引,可以有效的避免排序操作,如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
  • 为经常用作查询选择的字段建立索引
  • 在经常用作表连接的属性上建立索引
  • 考虑使用索引覆盖,对数据很少被更新的表,如果客户经常至查询其中的几个字段,可以考虑在这几个字段上建立索引,从而将表的扫描改变为索引的扫描。
注意以下限制:
  • 1.限制表上的索引数目。

对一个存在大量更新操作的表,所建索引的数目一般不超过3个,最多不超过5个,索引虽说提高了访问速度,但太多索引会影响数据的更新操作。

  • 2.不要在有大量相同取值的字段上建立索引。

在这样的字段(例如性别)上建立索引,字段作为选择条件时将返回大量满足条件的记录,优化器不会使用该索引作为访问路径。

  • 3.避免在取值朝一个方向上增长的字段(如日期类型的字段)上建立索引,对于复合索引,避免将这些类型的字段放置在最前面。

由于字段取值总是朝一个方向增长,新纪录总是存放在索引的最后一个数据页中,从而不断的引起该数据页的访问竞争、新数据页的分配、中间分支页的拆分。此外,如果所建索引时聚集索引,表中的数据按照索引的排列顺序存放,所有的插入记录都集中在最后一个数据页上进行,从而引起插入热点。

  • 4.对复合索引,按照字段在查询条件中出现的频度建立索引。
  • 5.删除不再使用,或者很少使用的索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值