mysql数据库优化
来源:互联网 发布:spring框架编程实例 编辑:程序博客网 时间:2024/04/28 05:51
1.创建索引:
(1).使用or
如select * from student where age>10 or math>80
单有一个创建索引无用,必须同时在age和math上两个同时建立索引,
(2)like
like使用‘%aa’不是使用索引,使用‘aa%’才会使用索引
(3)列类型如为字符串,必须输入为字符串,否则索引失效
(4)goup by 默认分组查询后有默认的排序,可能降低速率,可以使用order by null来处理
(5)使用and
使用and时可以通过创建复合索引方式进行查询
比如有一条语句是这样的:select * from users where area='beijing' and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。
(6)多表查询
多表查询最好使用join来使用查询,如使用select * from user left join product on user.id = product.user_id
(7)索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
(8)不要在列上进行运算
select * from user where YEAR(agedate)>2007
上述的查询将造成索引失效,从而通过全表扫面进行查询应该通过 select * from user where agedate >‘2007-01-01’
(9)不使用NOT IN和<>操作
NOT IN和<>操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id<>3则可使用id>3 or id<3来代替。
- MYSQL数据库查询优化
- mysql数据库优化
- MySQL数据库优化
- mysql数据库优化(转)
- 优化 MySQL 数据库
- 优化MySQL数据库查询
- MySQL数据库优化五步走
- 优化MySQL数据库查询
- 优化MySQL数据库查询
- 优化MySQL数据库查询
- Mysql数据库优化配置
- MySQL数据库优化--SQL
- 优化mysql数据库方法
- 数据库优化之MySQL
- MYSQL数据库的优化
- mysql数据库优化五步走
- MySQL 数据库性能优化
- mysql数据库优化五步走
- tcp可靠传输、流量控制、拥塞控制的实现(一)
- 开篇之作
- 学习Java源码笔记(二)
- ios多线程 -- GCD 常见用法
- 【Spring应用级学习】从Ioc开始
- mysql数据库优化
- 三.容器
- 使用C#开发HTTP服务器系列之实现Get和Post
- UICollectionView 视图滚动到指定位置的方法
- 思科多区域OSPF的配置
- bzoj2724
- centos6.5测试环境,mysql5.6,java8,tomcat8,文件解压,tomcat输出日志
- java基础(九)关键字final/多态/抽象类/关键字abstract/接口
- 二叉排序树转换成双向链表