MySQL索引优化
本文主要讲述了索引的概念,索引的作用是什么,MySQL索引结构,哪些情况下需要建立索引,哪些情况下需要建立索引!MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
一、性能下降主要原因
往往体现在执行时间长 / 等待时间长
1、SQL语句写的很烂
2、索引失效(单值索引、复合索引)
单值索引的建立:
假设一张表(user)的字段是id、name、email、wechat_num,如果要执行查询select * from user where name = ''
,但是这样做在数据量很大的情况下会很慢,所以根据name字段建立索引,create index idx_user_name on user(name)
idx_user_name是索引名称,user是表名,name是索引字段
复合索引的建立:
与上面的例子是相似的,假设要执行查询select * from user where name='' and email=''
,那么如果要建立复合索引,create index idx_user_nameEmail on user(name, email)
比如:
3、关联查询太多join
设计缺陷或者不得已的需求,大多发生在老旧的系统中
4、服务器调优及各个参数设置
比如缓冲区大小、线程数、连接数等等
二、常见通用的Join查询
1、SQL执行顺序
手写顺序
机读顺序
所以整个SQL的解析流程为:
Join总结
2、SQL Join的练习
建表插入数据,做练习准备
use day01;
create table tbl_dept(
id int(