zoukankan      html  css  js  c++  java
  • mysql索引

    前言

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

    策略1

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

    策略2

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

    策略3

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

    策略4

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

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

    策略5

    不要建立过多的索引

  • 相关阅读:
    react 组件库
    Git命令记录
    H5+App开发框架汇总
    常见移动设备的 CSS3 Media Query 整理(iPhone/iPad/Galaxy/HTC One etc.)
    天猫11.11:手机淘宝 521 性能优化项目揭秘
    H5项目常见问题汇总及解决方案
    【angular5项目积累总结】侧栏菜单 navmenu
    【angular5项目积累总结】avatar组件
    【angular5项目积累总结】breadcrumb面包屑组件
    开源建站系统
  • 原文地址:https://www.cnblogs.com/hellohell/p/5718437.html
Copyright © 2011-2022 走看看