SQL书写注意事项

为避免慢SQL,写SQL时多注意以下几项:

1.Like 条件不以 % 开头

2.where 条件中 等式左侧不要出现函数(+ - * /)

3.where条件尽量使用索引列

4.用具体的字段代替 SELECT *

5.尽可能使用join来代替子查询

6.优化 limit 分页   

    

例如:‘limit 1000,20’。

  这时MySQL需要查询1020条记录然后只返回最后20条,前面的1000条都将被抛弃,这样的代价非常高。如果所有页面的访问频率都相同,那么这样的查询平均需要访问半个表的数据。

第一:在索引上分页

  在索引上完成分页操作,最后根据主键关联回原表查询所需要的其他列的内容。

SELECT * FROM tb_user LIMIT 1000,10
可以优化成这样:

SELECT * FROM tb_user u 
INNER JOIN (SELECT id FROM tb_user LIMIT 1000,10) AS b ON b.id=u.id

第二: 将limit转换成位置查询

这种思路需要加一个参数来辅助,标记分页的开始位置:

SELECT * FROM tb_user WHERE id > 1000 LIMIT 10

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值