当你查询数据库中是否存在目标数据时,一般使用count(*)或者count(1)去查询,但这个只是想查询是否存在,而不是统计存在多少条,所以优化的建议是:
查询到一条目标数据就结束即可。
SQL不再使用count
,而是改用LIMIT 1
,让数据库查询时遇到一条就返回结果,不要再继续查找还有多少条了。
-- 原SQL,执行后需要查找整个表的所有内容,多次匹配
select count(*) as co1 from table where a='1' and b='2';
-- 优化后SQL,只需查找到一次符合条件的数据就结束
select 1 from table where a='1' and b='2' limit 1;
如果你的数据库目标有非常多的数据,按照原来的做法会查询全部后统计出来,而优化后的SQL只查询到第一条就结束了。相当于你需要寻找操场上的跑道是否有标记的点,你原来的做法是在操场上跑一圈查看地面上所有有标记的点,再统计求和得出结果;而优化后的做法是直接跑起来,找到第一个标记的点就可以得到结果。