导图社区 MySql索引
简述msyql索引使用的场景,查看索引使用情况,两个优化方法
Java多线程编程基础知识总结与复盘。本思维导图从Java多线程技能、对象及变量的并发访问、线程间的通信、Lock对象的使用、定时器Timer五个部分进行归纳整理。推荐收藏备用。
tomcat服务器整体模型和组成的各个级别组件介绍和作用分析
tomcat服务器组件connector组件的模型图、职责和组成的介绍
社区模板帮助中心,点此进入>>
英语词性
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
【华政插班生】文学常识-隋唐五代
【华政插班生】文学常识-两宋
MySql索引
场景
存在索引可以使用场景
(1)匹配全值
(2)匹配值的范围查询
(3)匹配最左前缀
(4)仅仅对索引进行查询
(5)匹配列前缀
(6)能够实现索引匹配部分精确而其他部分进行范围匹配
(7)如果列名是索引,那么使用 column_name is null就会使用索引(区别于Oracle)
(8)MySQL 5.6引入了 Index Condition Pushdown(ICP)的特性
存在索引但不能使用场景
(1)以%开头的LIKE查询不能够利用B-Tree索引
(2)数据类型出现隐式转换的时候也不会使用索引,特别是当列类型是字符串
(3)复合索引的情况下,假如查询条件不包含索引列最左边部分,即不满足最左原则Leftmost,是不会使用复合索引
(4)如果 MySQL 估计使用索引比全表扫描更慢,则不使用索引
(5)用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到
查看使用情况
show status like 'Handler_read%';
如果索引正在工作,Handler_read_key 的值将很高,
Handler_read_rnd_next的值高则意味着查询运行低效,并且应该建立索引补救
两个简单实用的优化方法
定期分析表和检查表
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] . .
analyze table payment;
CHECK TABLE tbl_name [, tbl_name] . . [option] . . option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
check table payment_myisam;
定期优化表
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] . .
optimize table payment_myisam;