1.能用“=”的时候就不要使用“<>”。(=增加了索引使用几率)
2.明知只有一条查询结果,那请使用“limit 1”。(这样可以避免全表扫描,找到对应结果就不用继续扫描了。但是要注意不要使用类似这种:LIMIT 1000000,10。数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算一次。这样会导致查询慢。)
3.选择合适的数据类型。(能用tinyint就不用smallint,能用smallint就不用int,较少磁盘和内存消耗)
4.将大的delete、update or insert 查询变成多个小查询。
5.如果结果集允许重复,使用union all 代替 union。(union all 不去重,效率高于union)
6.获得相同结果集的多次执行,保持SQL语句前后一致。(可充分利用查询缓冲)
7.尽量避免使用“select *”。(减少数据库服务器负担,减少网络开销)
8.where条件尽量被索引。(注意索引太多也会降低性能)
9.join子句里面的列尽量被索引。
10.order by 的列尽量被索引。
11.使用 limit 实现分页逻辑。
12.使用 explain 关键字去查看执行计划。(explain 参考:https://www.cnblogs.com/wd326150354/p/11022093.html)
13.推荐使用COUNT(*)。(COUNT(常量) 和 COUNT(*)表示的是直接查询符合条件的数据库表的行数。而COUNT(列名)表示的是查询符合条件的列的值不为NULL的行数)
14.避免出现隐式转换。(SQL语句中查询变量和字段定义类型不匹配是另一个常见的错误)
15.使用关联更新、删除。避免使用循环/嵌套子查询。(update table t1 join(select ...) t2 on t1.* = t2.* set t1.* = **)
16.去掉 exists 更改为 join,能够避免嵌套子查询。
17.提前缩小查询范围。
18.应避免使用函数对索引字段进行转换,否则可能会导致索引失效,全表扫描。
19.IN肯定会走索引,但是当IN的取值范围较大时会导致索引失效,走全表扫描。如果使用了 not in,则不走索引。
提高查询效率的几个小方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。