MySQL索引规则

InnoDB 底层存储结构为B+树, B树的每个节点对应innodb的一个page,page大小是固定的,一般设为 16k。其中非叶子节点只有键值,叶子节点包含完成数据。

索引(Index)是帮助 MySQL 高效获取数据的数据结构。但是索引的规则有哪些呢?

  • 索引一定要命名规范,哪个库哪个表哪几个字段哪种类型索引
  • 选择唯一性索引——唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录
  • 为经常需要排序、分组和联合操作的字段建立索引
  • 为常作为查询条件的字段建立索引
  • 限制索引的数目:越多的索引,会使更新表变得很浪费时间。
  • 尽量使用数据量少的索引,大字段尽量不要使用索引,如果使用用MD5值
  • 如果索引的值很长,那么查询的速度会受到影响
  • 尽量使用前缀来索引-如果索引字段的值很长,最好使用值的前缀来索引
  • 删除不再使用或者很少使用的索引
  • 最左前缀匹配原则
  • 尽量选择区分度高的列作为索引区分度的公式是表示字段不重复的比例
  • 索引列不能参与计算,保持列“干净”:带函数的查询不参与索引
  • 尽量的扩展索引,不要新建索引
  • 尽量索引覆盖,不要回表操作
  • 如果是多个索引,指定索引提高查询效率

索引固然可以提高查询效率的,但是也有自己的局限性,数据搜索还是适合用ElasticSearch,但是mysql要做持久化,同步ES两种方法:一种是ES的java API接口,另外一种是通过binlog日志,你们是怎么用的?


每周一句:他强由他强,清风拂山岗。他横任他横,明月照大江。直面自己的恐惧和焦虑,做一个内心强大的人!

本文分享自微信公众号 - 只喝牛奶的杀手(killerhub),作者:只喝牛奶的杀手

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL索引使用规则总结

    如何加快查询,最直接有效的办法就是增加索引,在不使用索引的情况下试图采用其他方式加快查询就是在浪费时间。本文先介绍下MySQL索引的基本数据结构,再对索引的基本...

    一生何求
  • Mysql常用的建立索引规则

    ​ 以上是一些普遍的建立索引时的判定依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不...

    剑行者
  • MySQL 字符集、校对规则及索引

    字符集指的是一种从二进制编码到某类字符符号的映射。校对规则则是指某种字符集下的排序规则。

    happyJared
  • 【索引潜规则】-覆盖索引、ICP、MRR详解

    上篇文章我们说了创建索引的方法,有聚簇索引、辅助索引、前缀索引、联合索引等,也说了如何利用索引的排序功能,接着本篇文章主要来说一说索引的几种优化策略,首先我们先...

    MySQL数据库技术栈
  • MySQL理解索引、添加索引的原则 转

    索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销。而如果采...

    henrylee2cn
  • mysql创建索引的原则

       b、过多的索引会导致insert、update、delete语句的执行效率降低;

    三哥
  • MySQL设计索引的原则

    换句话说,最适合索引的列是出现在 WHERE 子句中的列,或连接子句中指定的列,而不是出现在 SELECT 关键字后的选择列表中的列 。

    用户7657330
  • MySQL索引篇,索引的优缺点,分类及设计原则

    索引在数据库中的作用是快速找出某个列中一个特定值的行,不使用索引的话,MySQL必须从第一条记录遍历到相关行,表越大,花费的时间越多,但是如果有索引,就能快速的...

    A梦多啦A
  • ElasticSearch索引 VS MySQL索引

    这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的。

    Java团长
  • govaluate 规则引擎

    先说场景:以一个电商运维场景为例,我们需要对用户注册年限p1、购买金额p2、地域p3等条件给用户进行发券,基于条件进行任意组合成不同规则。比如:

    王小明_HIT
  • mysql-索引

    数据库中专门用于帮助用户快速查找数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置吗,然后直接获取

    py3study
  • MySQL索引

    索引管理 索引是什么? 索引就好比一本书的目录,它会让你更快的找到内容; 让获取的数据更有目的性,从而提高数据库检索数据的性能; 索引建立在表的列上(字段)。 ...

    863987322
  • MySQL 索引

    数据库的索引是一个要点, 无论是面试还是在工作中, 这个知识点都很常会用到, 你可能只是用过索引, 知道加了索引可以提高查询的性能, 但不知道为什么这样, 今天...

    一份执着✘
  • Mysql索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

    kevinfaith
  • Mysql索引

    建立索引也有缺点,在对表进行INSERT、UPDATE、DELETE时要维护索引文件,经常更新的表就不需要建立索引了

    晚上没宵夜
  • Mysql索引

    索引是对数据库表中的一列或多列的值进行排序的一种结构,使用索引可以提高数据库中特定数据的查询速度。

    OECOM
  • MySQL 索引

      我们用一个例子来逐渐引出啥是索引。话说大老板东哥有一天想体验一下快递小哥的生活,就去自家快递公司准备干活了,一进仓库看到一地的快递,兴冲冲的就问旁边的快递小...

    Demo_Null
  • Mysql索引

    Mysql官方对索引的定义为:索引(index)是帮助Mysql高效获取数据的数据结构。

    彼岸舞
  • Mysql 索引

    除了b+树索引外,还有hash索引,使用hash表去实现<key,value>,对于每一行数据,存储引擎都会对所有的索引列计算出一个hash code,将has...

    猎户星座1

扫码关注云+社区

领取腾讯云代金券