用户经常抱怨他们的应用程序运行缓慢。通过检查系统和数据库性能,你找到了一个数据库中运行缓慢的SQL查询语句。但如果你不知道怎么在MYSQL中对这个SQL语句进行调优,那又该怎么办呢?
小编给大家了几个调优的方法:
1.尽量避免非操作符的使用
在索引使用NOT ,<>,会导致索引失效,比如a不等于0 a<>0可以修改为 a>0 or a<0 ,NOT修改为a>0或者a>"",避免全表扫描
2.尽量避免使用前导模糊查询,因为前导模糊查询由%,不能利用索引,影响查询效率.
3.避免对查询列的操作
操作包含:数据库函数,计算机表达式,这样会导致全表扫描
4.避免不必要的类型转换
这里的类型转换是潜在的类型转换,比如将字符串与数字类型比较,这样会将字符串进行转换,导致全表扫描
5.增加查询范围的限制
少使用*,
6.合理使用in与exists
exists是循环的方式,外表记录数代表循环的次数,外表的记录少,适合用它.
in先执行子查询,子查询去重之后,然后在执行主查询,子查询返回结果越少,越适合这种方式.
如果两张表数据一样大,那么用in和exists差别不大,但是如果不一样大,子查询小的用in,主查询小的用exists.
7.规范所有关键字的书写,select ,update,delete,要么全大写要不全小写
在《Effective MySQL之SQL语句最优化》中,你可以看到更多的SQL优化方法。这本书旨在通过对优化SQL语句的理想方法和最佳原则的讨论来满足优化SQL语句的需要。
第一章将为读者提供一些可以直接应用到工作中的速成技巧。本章将会用到这些方法:
1.确认运行缓慢的查询;
2. 识别缺失的索引;
3. 应用新的索引;
4. 验证新的索引。
第二章将要介绍的SQL命令能够基本涵盖所有可能用到的SQL优化技术,包括创建索引。以下就是本章将要介绍的命令:
1. EXPLAIN 命令
2. SHOW CREATE TABLE命令
3. SHOW INDEXES命令
4. SHOW TABLE STATUS命令
5. SHOW STATUS命令
6. SHOW VARIABLES命令
创建合适的索引是SQL性能调优中最重要的技术之一。第三章将介绍下列内容:
●MySQL 索引各种可能的用途
●理解各种索引数据结构理 论
●各种存储引擎的索引实现方式
●分区的 MySQL索引
第四章将会讨论索引的各种类型、MySQL如何选择索引以及添加索引对系统整体性能的影响。本章还会介绍如何为特殊的治定查询创建索引。
第五章将介绍创建覆盖索引、创建局部列的索引这两个索引技术。
第六章将会介绍内存相关的系统变量、日志和工具系统变量、各种查询相关的系统变量。
第七章将讨论整个SQL优化生命周期中的6个阶段:
●截取SQL语句
●识别并分类有问题的SQL语句
●确认 SQL语句的当前操作
●分析SQL语句和辅助信息
●优化SQL语句
●验证SQL优化的结果
第八章中将讨论下面几种性能优化的技巧:
●去除重复的索引
●找到没有被使用的或者无效的索引
●改进索引
●减少SQL语句
●简化SQL语句
●缓存选项
最后一章将详细介绍EXPLAIN命令的全部语法和选项。
这本书详细地讲述了SQL语句优化的各种方法,希望对大家有帮助。