SQL判断是否"存在",还在用 count 操作?很耗时的!

1.业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下:

    SELECT count(*) FROM table WHERE a = 1 AND b = 2

是不是感觉很OK,没有什么问题。但是随着查询条件的条数越多,性能方面的效果就月明显。

2.推荐写法:

SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

SELECT 1 FROM table WHERE a = 1 AND b = 2 AND ROWNUM = 1  (Oracle 写法)

SQL不再使用count,而是改用LIMIT 1或ROWNUM = 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了

业务代码中直接判断是否非空即可

3.总结

根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容