我必须检查我的数据库中是否有值(字符串)。
目前我做了
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进行查询是否更快; ?并检查一行是否会回来?
答案 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?
...