MySQL性能:查询索引列是否具有给定值

问题描述

| 给定表
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条件之前实际计算所有匹配的行。