mysql速度mysql_num_rows vs查询限制1

时间:2011-06-10 05:15:53

标签: php mysql

我必须检查我的数据库中是否有值(字符串)。

目前我做了

select a.email,b.vuid from user a, verteiler_user b where a.email=\''.$email.'\' and a.kid=' . $kid.' and b.vid=' . $vid . ' and a.uid = b.uid

作为mysql_num_rows的查询,然后检查if >=1

但是使用限制1进行查询是否更快; ?并检查一行是否会回来?

3 个答案:

答案 0 :(得分:7)

是。运行limit 1查询会更快。如果您所做的只是检查是否存在行,为什么还要回复所有这些列呢?只需选择1即可。这将(可以忽略不计)更快。 BTW:您的代码看起来容易受到SQL注入攻击。请考虑使用mysql_real_escape_string()或类似功能清理查询的动态部分。

答案 1 :(得分:4)

LIMIT 1会有更好的效果,因为它会在满足LIMIT时停止匹配。

如果您只想要1行,请在查询中添加LIMIT 1

此外,如果您只检查查询中是否存在该字符串,则无需在查询中使用带有SELECT的列名。只需使用SELECT 1...

答案 2 :(得分:0)

你可以尝试:

select count(*) from user a, verteiler_user b 
     where a.email=\''.$email.'\' and a.kid=' . $kid.' and b.vid=' . $vid . ' and a.uid = b.uid

并按以下方式计算:

$row=mysql_fetch_array(...);
if ($row[0] > 0)  // is there a hit?
   ...