0
点赞
收藏
分享

微信扫一扫

一些关于sql优化的小笔记

程序猿不脱发2 2022-01-04 阅读 90

慎用==null

注意like的左右模糊

使用union代替or
使用union的时候尽量使用nuion all,避免发生去重,去重会使用临时表

避免使用临时表,当分配内存不足时,会自动创建myisam引擎表,而这个表是基于磁盘io处理的;

注意索引的使用

大页码的优化

1
ui设计阶段就避免出现大页码跳转,尽量使用上下页跳转
2
如果需要出现排序,必须避免排序关键字的全表扫描,比如,需要查询700000条到7000100条,那就先查询70000001的添加时时间,最后再根据这个时间进行排序;
既然是按照时间排序,此时也可以把查询变为添加时间>time limit10,

select * from user limit 700000,100 oder by create;
改为[利用索引覆盖]
select * from user where create > (select create from user order by create limit 7000000,1) order by create limit 10;

3
通过前端记录的上次最后一条的时间进行辅助,这样就可以避免时间排序时的全表

4
大多数用户都不会在意过于靠后的数据,所以在设计的时候直接就可以默认只查询前1000条,或者将前1000条进行缓存

补充:
当高并发的时候可能会出现时间有重复的情况下,使用最后一个时间进行辅助查询的时候可能出现死循环,sql需要进行变动,增加偏移量,

举报

相关推荐

0 条评论