问题描述
|
给定表
create table t (
t_id int not null primary key,c int not null,...
key (c)
)
我想查询t
中的任何行是否有c
等于X。我只需要是/否答案。
由于列ѭ2column已被索引,因此MysqL应该能够在索引中查找并在找到一个值X时立即停止。哪些查询将从MysqL中获得最佳性能?
你有比我更好的主意吗?
select 1 from t where c=X limit 1
要么
select count(*)>0 from t where c=X
我更喜欢前者。后者似乎需要优化器提供更多的技巧。
解决方法
您的极限1方法很好,可以使用存在的方法:
select exists (select 1 from t where c = x)
绝对不要数。这样做将使其在应用> 0条件之前实际计算所有匹配的行。