索引注意事项
(1)最左前缀原则
如果查询的时候,查询条件精确匹配索引的左边连续一列或几列,则可以命中索引。
(2)避免where 子句中对字段施加函数,如to_date(create_time)>xxxxxx,这样会造成无法命中索引。
(3)在使用InnoDB 时,使用与业务无关的自增主键作为主键,即使用逻辑主键,而不要使用业务主键。
(4)合理利用索引覆盖
覆盖索引(Covering index)指一个查询语句的执行,只需要从辅助索引中就可以得到查询记录,而不需要查询聚集索引中的记录,也可以称之为实现了索引覆盖。
简单来说,就是查询条件命中了索引,而查询字段也属于索引中的字段。
当实现了覆盖索引的时候,explain 命令的Extra 会显示 using Index。
(5)避免冗余索引
可以查询sys 库的schemal_redundant_indexes 表来查看冗余索引。
(6)将打算加索引的列设置为 NOT NULL,否则将导致引擎放弃使用索引,而进行全表扫描。
(7)删除长期未使用的索引
可以查询sys 库的 schema_unused_indexes 视图来查询从未使用过的索引。
(8)联表查询,也可以使用索引:
  • 确保 ON 和 USING 中列上有索引。
  • 确保任何的 GROUP BY 和 ORDER BY 中的表达式只涉及一个表中列。
(9)查询条件的字段应使用正确的数据类型,否则MySQL 会自动做类型转换,导致无法命中索引。
 
索引的代价:
1. 索引文件本身要消耗存储空间;
2. 在被索引的表上,INSERT/DELETE 会变慢;
3. MySQL在运行是,也要消耗资源维护索引;

MySQL 数据库-索引注意事项的更多相关文章

  1. 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询

    MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...

  2. MySQL数据库索引的4大类型以及相关的索引创建

    以下的文章主要介绍的是MySQL数据库索引类型,其中包括普通索引,唯一索引,主键索引与主键索引,以及对这些索引的实际应用或是创建有一个详细介绍,以下就是文章的主要内容描述. (1)普通索引 这是最基本 ...

  3. (转)MySql数据库索引原理(总结性)

    本文引用文章如链接: http://www.codinglabs.org/html/theory-of-mysql-index.html#more-100 参考书籍:Mysql技术内幕 本文主要是阐述 ...

  4. mysql数据库安装注意事项:

    mysql数据库安装注意事项: https://jingyan.baidu.com/article/642c9d34aa809a644a46f717.html(安装教程) 注意语言设置为gbk可以解决 ...

  5. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  6. 为什么MySQL数据库索引选择使用B+树?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使 ...

  7. MySQL数据库索引之B+树

    一.B+树是什么 B+ 树是一种树型数据结构,通常用于数据库和操作系统的文件系统中.B+ 树的特点是能够保持数据稳定有序,其插入与修改操作拥有较稳定的对数时间复杂度.B+ 树元素自底向上插入,这与二叉 ...

  8. MYSQL数据库索引类型及使用

    MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...

  9. MySQL数据库索引的底层原理(二叉树、平衡二叉树、B-Tree、B+Tree)

    1.MySQL数据库索引的底层原理 https://mp.weixin.qq.com/s/zA9KvCkkte2mTWTcDv7hUg

随机推荐

  1. Flink的容错

    checkpoint介绍 checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如 异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保 ...

  2. eclipse启动web应用

    在建好web项目的基础上: (1)配置tomcat服务器 点击window---->Preference----->Server---->Runtime Environment--- ...

  3. selenium_webdriver(python)控制浏览器滚动条

    调过JS脚本控制 #coding=utf-8 from selenium import webdriver import time #访问百度 driver=webdriver.Firefox() d ...

  4. 使用VMware通过vmdk文件创建XP虚拟机

    一.打开VMware workstation10,转到主页,选择“创建新的虚拟机”,然后选择“自定义(高级)”选项 二.虚拟机硬件兼容性选择默认兼容10.0模式,下一步之后,选择“稍后安装操作系统” ...

  5. 给定数组长度2n,分成n对,求n对最小元素之和最大

    给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大. 示例 ...

  6. 010 异步处理Rest服务

    一:任务 1.任务 使用Runnable异步处理Rest服务 使用DefaultResult异步处理Rest服务 异步处理的配置 2.原理图说明 二:Callable进行异步处理 1.程序 新建一个a ...

  7. HDU-1009的解题报告

    Hdu-1009 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009 题意:Fatmouse准备M磅的猫食,准备与猫守卫仓库有他最爱吃的食品贸易,J ...

  8. vmware + centos 7安装vmtools时提示The path "" is not a valid path to the xxx kernel header

    在安装vmtools时无意中出现了这样的问题 1.gcc错误 Searching for GCC- The path "" is not valid path to the gcc ...

  9. 不一样的go语言-error

    前言   go语言的error处理方式,在目前流行的编程语言中属于刺头.似乎天生就是用来有别于他人标记.TIOBE排行榜全十除了C语言,无一例外是try catch的阵营.而排在go之前的语言除了C与 ...

  10. Logstash读取Kafka数据写入HDFS详解

    强大的功能,丰富的插件,让logstash在数据处理的行列中出类拔萃 通常日志数据除了要入ES提供实时展示和简单统计外,还需要写入大数据集群来提供更为深入的逻辑处理,前边几篇ELK的文章介绍过利用lo ...