mysql sql优化及注意事项
2024-08-24 22:36:45
- sql优化分析
通过slow_log等方式可以捕获慢查询sql,然后就是减少其对io和cpu的使用(不合理的索引、不必要的数据访问和排序)
当我们面对具体的sql时,首先查看其执行计划
A.看其是否使用索引
B.查看其查询的记录数
C.确定索引的代价是否过高
D.是否可以使用复合索引
E.是否有“using temporary”
F.是否有“using filesort”
- 创建高效索引
mysql的innodb有自己特殊的聚集索引(数据是按聚集索引的顺序存储的并和索引存储在一起),索引访问效率较高,次
要索引是通过先找到pk聚集索引,然后才能找到数据。
单列索引
单列索引比较简单,就是对单个列创建的索引,主键索引最好选择int类型,提高性能。
复合索引
复合索引是多列组合而成的索引,过滤效果越好的越放在前面,尽量通过索引完成过滤,回表只是取出额外的字段,当然如果
不需要回表,只扫描索引就可以获取所需数据最好了
- sql写法注意事项
1)禁止3表以上的join
2)避免"select *"和排序功能共同使用
3)用jion替换子查询
4)用union all替换union
5)避免数据类型的转换,同数据类型比较
6)避免排序(通过索引或减少排序记录数)
7)对数据尽早过滤(复合索引过滤性更好的字段放的更靠前;尽量加少最后join结果集的数量)
8)把大sql拆分为多小sql
9)如果只是分组,用”group by a1 order by null“替换“group by a1”去除排序
10)禁止索引null列
11)字符例是否是前缀索引
转自:http://blog.csdn.net/wyzxg/article/details/7598964
最新文章
- 关于app的具体实施
- html5 canvas用动画的形式装载图像
- sphinx教程
- python简单实现用户表单登录
- Bzoj1150 数据备份Backup
- Octopus系列之开发中灵光点收集,先放到这里,后面会整理的
- MySQL提示:The server quit without updating PID file问题的解决办法
- openlayer调用geoserver发布的地图实现地图的基本功能
- Java异常处理面试题归纳
- luoguP2265 路边的水沟
- 自己做一台3D打印机到底有多难?(附教程)
- python初识(二)
- PHP trait
- 12 SharedPreferences
- java基础学习周计划之1--语言基础
- SpringMVC接收json数组对象
- T-SQL:qualify和window 使用(十七)
- this作用范围
- oracle 查询 磁盘使用率
- IDEA测试结果查看
热门文章
- shell source命令说明
- 分布式队列Celery入门
- U3D的一些常用基础脚本
- C语言再学习之 setjmp与longjmp
- leetcode 之Remove Duplicates from Sorted Array(1)
- int各种数据类型的表示范围
- 这是我在word 2010上发布的第一篇文章
- JQuery - 特殊字符转义(Uncaught Error: Syntax error, unrecognized expression:的处理)
- Hadoop案例(三)找博客共同好友
- 关闭webstorm自动保存,并显示文件未保存标识