Mysql基础技能(三)
来源:互联网 发布:淘宝模拟器抢券 编辑:程序博客网 时间:2024/05/16 19:30
索引优化基础
MySQL只在认为走索引可以筛去85%以上数据的时候,才使用索引,如果达不到这个标准,索引是无意义的。
前缀索引:MySQL可以利用索引的前向部分,但不可以利用后向部分,不支持反向索引。
例如:SELECT col2 FROM table WHERE col1=1;可以使用索引(col1,col2),但不可以使用(col2,col1).
不等比较的优化:如果索引的前向部分在WHERE中是等于,那么可以使用索引,如果索引的前向部分再WHERE中是不等比较,那么不可以为后面的等于比较使用索引
例如:SELECT col1 FROM table WHERE col2=1 AND col3 >10;可以完全使用索引(col2,col3),但只可以使用(col3,col2)的前缀,
排序的优化:可以在条件是等于的时候继续使用索引排序,或者条件中的不等于字段就是排序字段。
例如:SELECT col1 FROM table WHERE col2=1 AND col3>0 ORDER BY col3,可以完全使用索引(col2,col3)避免排序。但条件是col2<1 AND col3=0 ORDER BY col3时则只能使用col2排除记录,不可以用来排序。
GROUP BY/DISTINCT也是以排序为基础,优化同上。
chema设计优化
TEXT/BLOB字段分开单表存储与原表主键一一对应。
经常查询的字段与不经常查询的字段分开存储,用主键一一对应,例如帖子标题和内容。
频繁进行统计的SQL,可以转化为表存储,将查询压力分散到更新时。
频繁的对表进行count也可以转化为统计表存储。
SQL书写优化
尽量将子查询转化为链接查询,除非子查询只返回极少的记录。
不要在条件里写不必要的条件。
没有必要排序的分组采用ORDER BY null指定不排序。
OR条件若不能正确的走索引,则拆分为两条SQL。
不在乎重复的情况下,UNION ALL可以避免UNION要做的排序。
没必要的时候不要做外连接,内连接效率比外连接高。
- Mysql基础技能(三)
- Mysql基础技能(一)
- Mysql基础技能(二)
- mysql基础(三)
- mysql基础(三)
- MySQL基础(三)
- MySQL基础(三)
- MySQL基础技能与原理
- mysql基础篇(三)
- MySQL基础语法(三)
- 基础技能
- MySQL基础笔记(三) 复杂查询
- mysql面试必会基础(三)
- mysql基础---字段管理(三)
- MySQL基础笔记(三) 复杂查询
- MySQL总结—基础篇(三)
- 编程经验:三大基础技能JSP/JavaBean/Servlet
- AmazeUi基础技能的学习(一)
- 伪代码说明Linux进程创建过程
- QTP操作dataTable
- VC系统托盘编程
- All About JAVA 关于英文服务器下输出含有中文字符文件乱码的问题
- jquery之修改元素样式(获取和设置样式,使用css(),width(),height()方法)
- Mysql基础技能(三)
- Jquery 插件
- fopen
- 代码段使用 博客园转帖
- 用Java编写通过代理访问的应用程序
- Android程序的入口点是什么,不是Main()吗
- Java2的集合框架 Collection
- A fatal error has been detected by the Java Runtime Environment
- CS8900在linux-2.6.30移植支持s3c2440