这个mySQL查询可以更快吗?

时间:2011-09-01 18:06:51

标签: php mysql

有了这个,我检查是否已经有一个注册了相同登录名的会员。我担心的是,如果数据库变得越来越大,成千上万的成员,我应该以某种方式编辑它吗?

    $qry = "SELECT * FROM registered WHERE login='$login'";
    $result = mysql_query($qry);
    if($result) {
        if(mysql_num_rows($result) > 0) {
            $errmsg_arr[] = 'Login ID already in use';
            $errflag = true;
        }
        @mysql_free_result($result);
    }
    else {
        die("Query failed");
    }

4 个答案:

答案 0 :(得分:3)

只需限制您提取的列数。而不是SELECT *,而只是SELECT login或类似的东西。只要login被编入索引,查询本身就不会很慢。

$qry = "SELECT login FROM registered WHERE login='$login'";

对于RDBMS来说,数千行应该没问题。它们旨在处理数百万,但您可以通过不选择所有列来节省一点内存。

答案 1 :(得分:3)

很少。

  • 您应该在您尝试在where条件中使用的行上添加索引。
  • 你已经完成了逃脱?如果不是您的查询容易注入。
  • 即使没有索引,1000行也不算什么。

答案 2 :(得分:0)

$qry = "SELECT COUNT(*) as cnt FROM registered WHERE login='$login'";
$result = mysql_fetch_assoc(mysql_query($qry));
if($result['cnt']) {
    $errmsg_arr[] = 'Login ID already in use';
    $errflag = true;
}
else {
    die("Query failed");
}

答案 3 :(得分:0)

我觉得这不会是“更快”,但如果行存在与任何其他字段的长度相比,你只会将一个字符返回给查询。

SELECT 1 FROM registered WHERE login='$login' LIMIT 1