MySQL数据库查询库里是否有符合条件的字段如何解决慢查询
问题背景
想看看有没有color=“red” 的条目,下意识使用这条语句
SELECT COUNT(1) FROM XXX WHERE COLOR = #{color}
提交代码被驳回,这种语句在大数据量情况下会导致慢查询
leader想要只要找到符合该条数据条件的条目,就返回查询结果,因为数据库条目很多,所以需要查到就立马返回结果
解决方案
使用下面sql
SELECT 1 FROM XXX WHERE COLOR = #{color} LIMIT 1
这样的话,就只查到一条符合的数据的话,就直接返回1
虽然在极端情况下,也就是没有该条数据的时候也会全表查询
但是如果数据库确实有这条数据 而且比较多的话,只要一查到符合条件的数据就直接返回1了,不会造成全表查询而导致慢查询
如果没有查找到,则返回null
对比效率
-- 耗时156ms
SELECT COUNT(1) FROM XXX WHERE COLOR = #{color}
-- 耗时0.167ms
SELECT 1 FROM XXX WHERE COLOR = #{color} LIMIT 1