我必须检查数据库中是否有值(字符串)。
现在我做
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的情况下进行查询会更快吗?并检查是否会再次发生争吵?
是。运行limit 1
查询会更快。如果你所做的只是检查一行的存在,为什么还要返回所有这些列呢?只需选择1
。那会更快(可以忽略不计)。BTW:您的代码看起来很容易受到SQL注入攻击。考虑使用mysql_real_escape_string()
或类似的函数来清除查询的动态部分。
LIMIT 1
将具有更好的性能,因为它将在满足LIMIT
时停止匹配。
如果只需要一行,请将LIMIT 1
添加到查询中。
此外,如果您只是在查询中检查该字符串的存在,则不需要在查询中使用带有SELECT
的列名。只需使用SELECT 1...
即可。
您可以尝试:
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?
...