mysql sql优化

1,mysql拥有自身的sql优化器
mysql常见瓶颈:CPU,磁盘io,服务器硬件
2,explain
使用explain关键字模拟sql优化器执行sql语句,分析sql语句和表结构的性能瓶颈
使用:explain + sql语句
作用:表的读取顺序
id——select_type——table——type——possible_keys——key——key_len——ref——row——extra
id :select查询的序列号,id相同是,执行顺序从上往下。id不同时,id值大的先执行
select_type :查询类型
simple 简单查询,不包含子查询或者union
primary 查询包含子查询
subquery 子查询
derive 衍生子查询,在from后的子查询
union union后的子查询
union result 从union表获取结果的select
type :文件查询类型
从最好到最差
system->const->eq_ref->ref->range->index->all
一般来说,查询优化到range
system 一张表只有一条记录
const 表示通过常量索引,一次就查找到,常用与比较主键或者唯一索引
eq_ref 唯一索引扫描,常用与比较主键或者唯一索引
ref 非唯一索引扫描,返回与条件值对应的多行记录
index 全表通过索引文件扫描
all 标明通过磁盘文件全表扫描
possible_keys: 查询涉及的字段如果有索引,将被列出,但是不一定被查询实际使用
key :实际使用的索引,没有使用或者索引失效,则为null。查询中如果使用了复合索引,则该索引只出现在key列。
key_len:表示索引使用的字节数,该列显示的是索引字段的最大可能长度,并非实际使用的长度。key_len是根据表字段的定义得来的。
ref:显示索引的那一列被使用了或常量
rows: 根据表的统计信息和索引的选用情况,估计 找出查询的结果 需要读取的行数
extra: 不适合在其他列显示的额外信息
分类:using filesort mysql无法使用索引完成的排序操作称作文件排序
using temporary 使用临时表保存中间结果,mysql在对查询结果排序时使用临时表。常见于排序order by 和分组 group by
using index 表明相应的select操作中使用了覆盖索引,没有在表中查找数据行。
using where 表明索引被用来执行索引键值的查找,如果没有同时出现using where 则表明索引用来读取数据而非执行查找动作。
覆盖索引:查询的列被所建的索引覆盖
!!!ps
索引优化
1)mysql range查询类型后面的索引无效
2)多表连接:左连接特性,left join条件决定如何从右表搜索行,左表一定都有,所以右表是关键点,一定需要建立索引。
3)索引最好建在经常查询的字段中


join优化
1)尽可能减少join语句嵌套循环的循环总次数,永远用小表驱动大表。

  1. 优先优化嵌套循环的内层循环
    3)保证join语句中被驱动的表上join on字段已经建立索引
    4)当无法保证被驱动的表上join字段建立索引,且内存资源充足的情况下,可以增加joinbuffer的设置
    索引失效
    1.1 不在索引列上做任何操作(包括计算,函数,自动or手动类型转换),会导致索引失效
    1.2 存储引擎不能使用范围条件(<,>,in,between and )。
    1.3 尽量使用覆盖索引,减少select *
    1.4 mysql在使用不等于(!=,<>)的时候,无法使用索引会导致全表扫描
    1.5 is null ,is not null 无法使用索引
    1.6 like以通配符开头(%abc)会导致索引失效,%,like加右边
    1.7 字符串不加单引号索引失效
    1.8 少用or,用它连接时会索引失效
    1.9 最佳左匹配法则
    1.10 group by分组必排序,会用到临时表。
    抄袭口诀
    全值匹配我最爱,最左前缀要遵守
    带头大哥不能死,中间兄弟不能断
    索引列上少计算,范围之后全失效
    like %写最右,覆盖索引不写*
    不等空值还有or,索引失效要少用
    字符引号不能丢,SQL高级也不难

3,查询截取优化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容