MySQL相关

1、SQL语句优化的方法:
①库表结构优化;
②索引优化;
③查询语句性能优化:
使用Explain进行分析——Explain用来分析SELECT查询语句,开发人员可以通过分析Explain结果来优化查询语句;
优化数据访问——减少请求的数据量(只返回必要的列所以最好不要使用select *;只返回必要的行所以最好使用LIMIT语句来限制返回的数据;缓存重复的数据)
优化数据访问——减少服务端扫描的行数(最有效的方式是使用索引来覆盖查询)
重构查询方式——切分大查询;分解大连接查询。
2、索引优化的方法:
①独立的列(在进行查询时,索引列不能是表达式的一部分,也不能是函数的参数,否则无法使用索引)
②多列索引(在需要使用多个列作为条件进行查询时,使用多列索引比使用多个单列索引性能更好。)
③索引列的顺序(让选择性最强的索引列放在前面)
④前缀索引(对于BLOB、TEXT和VARCHAR类型的列,必须使用前缀索引,只索引开始的部分字符。)
⑤覆盖索引:索引包含所有需要查询的字段的值。(索引通常远小于数据行的大小,只读取索引能大大减少数据访问量;一些存储索引如MyISAM在内存中只缓存索引,而数据依赖于操作系统来缓存。因此,只访问索引可以不使用系统调用;对于InnoDB引擎,若辅助索引能够覆盖查询,则无需访问主索引。)
3、索引什么时候失效:
①什么时候没用:有or必全有索引;复合索引未用左列字段;like以%开头;需要类型转换;where中索引列有位运算;where中索引列使用了函数;如果mySQL觉得全表扫描更快时;
②什么时候没必要用:唯一性差;频繁更新的字段不用(更新索引消耗大);where中不用的字段;索引中使用大于小于号时,效果一般。
4、当向MySQL发送一个请求的时候,MySQL到底做了什么?
答:
①客户端发送一条查询给服务器;
②服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段;
③服务器进行SQL解析,预处理,再由优化器生成对应的执行计划;
④MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;
⑤将结果返回给客户端。
#MySQL##学习路径#
全部评论

相关推荐

2 16 评论
分享
牛客网
牛客企业服务