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 条评论
登录 后参与评论

相关文章

  • 关于全文检索

    我们都知道关于全文检索大多公司的选型都是ElasticSearch,为什么是它?可能有的人会回复Es利用倒排索引适用于全文检索,倒排索引怎么存的?倒排索引为什么...

    只喝牛奶的杀手
  • 架构原则

    避免过度设计:简单的架构就是最好的架构。最简单的方案最容易实现和维护,也可以避免浪费资源,但方案中需要包括扩展。此外,架构不是一成不变的需要随着业务的发展而演进...

    只喝牛奶的杀手
  • 几个正确的认知

    接上篇《关于创新障碍》,怎么才能创新?精进自省,提高认知。因果来源于选择,选择来源于认知,认知来源于底层思维模型。提高认知的才能有所突破,不要停留在固定思维里面...

    只喝牛奶的杀手
  • MySQL中的索引和锁

    索引常见的类型有哈希索引,有序数组索引,二叉树索引,跳表等等。本文主要探讨 MySQL 的默认存储引擎 InnoDB 的索引结构。

    用户1212940
  • SQL server 数据库的索引和视图

    L宝宝聊IT
  • 数据库查询和数据库(MySQL)索引的优化建议

    索引是帮助MySQL高效获取数据的数据结构,在存储引擎中实现的,所以每种存储引擎中的索引都不一样。那么,数据库中的索引有什么作用?引入索引的目的是为了加快查询速...

    新梦想IT职业教育
  • MySQL索引篇,索引的优缺点,分类及设计原则

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

    卡二条的技术圈子
  • 索引使用策略及优化

    MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结...

    互扯程序
  • 我以为我对Mysql索引很了解,直到我被阿里面试官22连击

    相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。

    帅地
  • 两千字揭密 MySQL 8.0.19 三大索引新功能:隐藏索引,降序索引,函数索引

    导读:本文详细介绍 MySQL 8.0.19 三大索引新功能,隐藏索引,降序索引,函数索引,结合其他同仁的技术应用案例,进一步进行验证改编,最后总结心得,希望对...

    数据和云

扫码关注云+社区

领取腾讯云代金券