索引注意事项
(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. python函数默认参数为可变对象的理解

    1.代码在执行的过程中,遇到函数定义,初始化函数生成存储函数名,默认参数初识值,函数地址的函数对象. 2.代码执行不在初始化函数,而是直接执行函数体. 代码实例 这要从函数的特性说起,在 Python ...

  2. 【转】通过 INotifyPropertyChanged 实现观察者模式

    通过 INotifyPropertyChanged 实现观察者模式 原博客地址 http://frankdzu.blog.sohu.com/117654536.html 普通观察者模式存在的问题 我们 ...

  3. MySQL高级02

    索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构.你可以简单理解为“排好序的快速查找数据结构”. 在数据之外,数据库系统还维护着满足特定查找算法的 ...

  4. 011 pandas的常见操作

    一:对索引进行操作 1.reindex重新索引 pandas提供了一个方法来创建一个适应新索引的新对象. Series通过调用reindex方法会根据新的索引顺序重新排序,如果新的索引中存在原索引不存 ...

  5. js(javaScript)的各种事件触发,以常见为主eg:onclick

    js的各种事件触发,以常见为主eg:onclick1.onclick,点击后触发事件 (1)<h1 onclick="this.innerHTML='谢谢!'">请点击 ...

  6. 2018 icpc 青岛网络赛 J.Press the Button

    Press the Button Time Limit: 1 Second      Memory Limit: 131072 KB BaoBao and DreamGrid are playing ...

  7. appium环境搭建及项目实战

    手机端自动化环境搭建比其他自动化环境搭建较为复杂,安装工具有点多,也会有很多坑,安装工具一定注意版本号对应问题. 一.我的电脑环境:win7  64位,安卓测试机4.4.2版本,Python3.6,a ...

  8. BZOJ 4260 Codechef REBXOR (区间异或和最值) (01字典树+DP)

    <题目链接> 题目大意:给定一个序列,现在求出两段不相交的区间异或和的最大值. 解题分析: 区间异或问题首先想到01字典树.利用前缀.后缀建树,并且利用异或的性质,相同的两个数异或变成0, ...

  9. python mysql中文乱码

    问题: MySQLdb存入数据库后,在命令行查询 "select * from ip;",其中的中文都是乱码的. 但是通过python 执行 "select * from ...

  10. 004.Heartbeat+HAProxy+MySQL半复制高可用架构

    一 基础环境 节点 系统版本 MySQL版本 业务IP 心跳IP Master CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Slave Cen ...