- MySQL优化是一个综合性技术,基本优化技术包括:
-
- 表结构设计合理,符合最基本的3NF
- 添加适当的索引:主键索引,普通索引,唯一索引,全文索引
- 分表技术:水平分隔,垂直分隔
- 存储过程,是一种预编译的执行计划,MySQL编译是比较耗时的,存储过程作为已编译的数据库对象可以提升查询速度
- 修改MySQL配置文件,my.ini可以配置缓存大小、排序缓存大小、最大查询并发数等;
- 读写分离,insert、delete、update是少频应用,select是高频应用,可以将增删改操作分发到独立的服务器,select操作分发到另外服务器(也可以是分布式服务器)
【会】使用索引
1、推荐使用 in
SQL1:select datekey, revenue from compdeal_stat_weekly where datekey >= 20150504 and datekey <= 20150525 and cityid = 1 and siteid = 42 and classid = 226 and categoryid = -999;
SQL2:select datekey, revenue from compdeal_stat_weekly where datekey in (20150504, 20150511, 20150518, 20150525) and cityid = 1 and siteid = 42 and classid = 226 and categoryid=-999;
说明:周表用每周的周一标示本周交易信息,所以20150504~20150525中datekey只包含20150504, 20150511, 20150518, 20150525
二者执行计划分别如下
从执行计划中,我们发现二者都用到primary key,但是SQL1检索的rows达到609293行,而SQL2检索的rows只有4行,说明SQL1没有用到cityid, siteid, classid, categoryid这几个索引;
结论:使用索引字段最好不要出现>= <=这样对MySQL来说模糊的条件,而是使用确定性的查询条件,比如in
2、注意索引的顺序
查询需求:查询交易信息
SQL1:select datekey, classid, categoryid, revenue from compdeal_stat_weekly where siteid = 42;
SQL2:select datekey, classid, categoryid, revenue from compdeal_stat_weekly where datekey > 0 and siteid = 42;
说明:表中datekey全部是都是大于0的
二者执行计划分别如下:
从执行计划我们可以观察到:
- type:SQL1的type是ALL,表示全表扫描,也就是说没有用到索引;SQL2的type是range,以范围的形式使用索引
- key:SQL1的key为null,SQL2的key为primary,再次说明SQL1没有使用索引
- key_len:SQL1的key_len为null,没有用到索引,SQL2的key_len为4
- rows:SQL1的row为1218479,SQL2的rows为609293,是前者的一半
结论:对于复合索引,如果在查询条件中不使用前面的索引字段,只使用靠后的索引字段,是不会使用任何索引字段的;所以需要创造条件使用到左侧的索引字段;
- 3、查询条件中如果有or,并且有不是索引字段作为查询条件,那么所有索引也不会使用;
- 4、对于char或者vachar类型的字段使用索引进行查询时,like ‘%ly’,这种模糊查询不会使用到索引;like 'he%'可以使用索引;对于前者可以使用MySQL相应的function
相关推荐
mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化...
mysql性能优化
mysql性能优化教程.pdf,方面阅读
mysql 性能优化与架构设计的word完整版,不可多得得关于 mysql 性能优化以及架构设计方面的资料。
Mysql性能优化教程 优化mysql性能,高并发
caoz的mysql性能优化教程 caoz的mysql性能优化教程 caoz的mysql性能优化教程 caoz的mysql性能优化教程 caoz的mysql性能优化教程
MySQL性能优化中文手册 包括sql语句,存储过程,函数的调试,调优
Mysql性能优化教程
MySQL性能优化教学视频: https://www.bilibili.com/video/av29072634/?p=5 对应的笔记和资料
mysql性能优化与诊断,详解优化经验与如何诊断瓶颈在哪
mysql性能优化的一个文档资料,大家下载来看看吧。mysql性能优化的一个文档资料,大家下载来看看吧mysql性能优化的一个文档资料,大家下载来看看吧
十三MySQL性能优化详解.pdf
MySQL性能优化的最佳20条经验,还不错,可以下载来看看。
mysql 性能 优化 pdf MySQL 介绍和优化分享
千金良方:MySQL性能优化金字塔法则.docx
大牛-高级教程MySQL性能优化实战。
MySQL性能优化 为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询
MySQL性能优化和高可用架构实践.pptx
MySQL 性能优化 Explain ,MySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 Explain
MySQL性能优化 SQL优化方法技巧