怎么做SQL调优?

本文分享了8种SQL性能优化的方法,包括选择有效的表连接顺序、避免使用通配符*、用where子句替换having子句、使用索引避免排序、避免对列的操作、去掉IN和OR、以及使用exists和in相互替代等,旨在帮助数据库管理员和开发人员提高查询效率。

1.选择有效率的表连接顺序

	这个你要了解SQL语句执行的过程,就比如from:子句--执行顺序为从后往前、从右到左,表名(最后面的那个表名为驱动表,执行顺序为从后往前, 所以数据量较少的表尽量放后)。

2.避免使用*

	SQL解析的时候,需要将 * 转换为所有列名,这个工作需要依靠数据字典来完成。

3.用where子句替换having子句

	where子句搜索条件在进行分组操作之前应用;而having自己条件在进行分组操作之后应用。
	避免使用having子句,having子句只会在检索出所有纪录之后才对结果集进行过滤,这个处理需要排序,总计等操作。

4.使用索引来避免排序操作

	order by后面的字段上建有索引,将会大大提升效率!

5.不要在选择性较低的字段建立索引(enum枚举类型)

6.避免对列的操作

	这点非常重要,不要在where条件中对字段进行数学表达式运算,任何对列的操作都可能导致全表扫描。

7.尽量去掉"IN",“OR”

	含有"IN"、"OR"的where子句常会使用工作表,使索引失效。

8.用exists、not exists和in、not in相互替代

	IN适合于外表大而内表小的情况;exists适合于外表小而内表大的情况,自己理解下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值