1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

  2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式

  3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录

  4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);

  5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可

MySql 创建索引原则相关推荐

  1. MySQL 创建索引和索引效率验证

    MySQL 创建索引和索引效率验证 对于一张存储数据的表来说,通常来说数据量会很大. 项目中总会有一些表数据量非常大,并且在使用过程中,需要频繁地到这些表中查询数据. 数据量大的时候,查询速度会明显变 ...

  2. MySQL创建索引失败

    MySQL创建索引失败 报错信息: 原因:将数据库表中某个字段设为索引时,提示当前字段的长度过长,为3072个字节: 经过查询发现: 在mysql5.6中索引列的最大长度为767个字节 而对于utf- ...

  3. navicat下对mysql创建索引导致死锁,数据库崩溃,完美解决方案

    文章目录 写在前面 一.短事务场景下,执行DDL语句场景分析 1.短事务场景下,执行表字段添加操作 2.短事务场景下,执行表字段修改操作 3.短事务场景下,执行表字段删除操作 (1)往里添加一条数据试 ...

  4. SQL CREATE INDEX (mysql 创建索引)语句

    ** SQL CREATE INDEX (mysql 创建索引)语句 ** 1.创建普通索引 SQL CREATE INDEX 语法 在表上创建一个简单的索引.允许使用重复的值: CREATE IND ...

  5. c mysql创建索引,如何创建mysql索引

    索引是一种特殊的文件(innodb数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注: [1]索引不是万能的! 索引可以加快数据检索操作,但会使数据修改操作变慢.每修 ...

  6. mysql 创建索引规范

    1)用途.优缺点 用途:主要用于提高检索(排序)效率 优点:提高检索效率 缺点:增加新增.修改.删除删除索引的维护成本,需要增加额外的存在空间 ---------------------------- ...

  7. MySQL创建索引(CREATE INDEX)

    索引的建立对于 MySQL 数据库的高效运行是很重要的,索引可以大大提升 MySQL 的检索速度. 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 CREATE INDEX 语句 可以使 ...

  8. mysql创建索引要加index吗_MySql创建索引,添加索引

    alter table 数据库add index 索引名称(数据库字段名称) PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( ...

  9. MySQL 创建索引

    索引的建立对于 MySQL 数据库的高效运行是很重要的,索引可以大大提升 MySQL 的检索速度. 基本语法 MySQL 提供了三种创建索引的方法: 1 使用 CREATE INDEX 语句 可以使用 ...

最新文章

  1. python 基础学习 正则表达式1(规则)
  2. CocoStudio游戏发布后资源加密大致实现思路
  3. eclipse基本断点调试
  4. 示波器到底选择多大的带宽合适
  5. oracle报错无效列类型,jooq oracle存储过程与ARRAY,无效列类型:1111
  6. 如何处理Dubbo调用超时
  7. java result元素_Java JDBC 中获取 ResultSet 的大小
  8. php 获取 uri,获取URI地址
  9. 从没想过会有一个这样的机会|大疆招聘
  10. 那些面对面试官的“绝杀技”
  11. 在MacOS系统中如何自定义屏幕保护程序?
  12. 基于SSM的教学质量系统
  13. Intellij IDEA安卓开发环境的搭建
  14. 《Java设计模式》刘伟 超清晰版本 下载链接
  15. 中兴新支点操作系统_中兴发国产操作系统新支点,好不好用测了才知道
  16. 几种统计图表的作用和区别
  17. 什么是SPA,如何实现SPA应用呢?
  18. 计算机论文研究思路怎么写,论文的研究思路模板范文 课题研究思路怎么写
  19. elasticsearch2.2之index映射参数的not_analyzed属性
  20. Bad Request This combination of host and port requires TLS. postman

热门文章

  1. 【运筹学】表上作业法 ( 最优解判别 | 初始基可行解 | 运费修改可行性方案 | 闭回路法 )
  2. 【Android 高性能音频】Oboe 开发流程 ( Oboe 完整代码示例 )
  3. 【FluidSynth】FluidSynth 简介 ( 相关资源链接 | 简介 | 特征 )
  4. LeetCode 312. Burst Balloons
  5. Docker实战(一)之使用Docker镜像
  6. Docker常用操作命令
  7. C#文件夹权限操作工具类
  8. PyQt5显示一个空白的窗口
  9. 监控Tomcat解决方案(监控应用服务器系列文章分享)
  10. win7系统怎么获取system权限?