有了这个,我检查是否已经有一个注册了相同登录名的会员。我担心的是,如果数据库变得越来越大,成千上万的成员,我应该以某种方式编辑它吗?
$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");
}
答案 0 :(得分:3)
只需限制您提取的列数。而不是SELECT *
,而只是SELECT login
或类似的东西。只要login
被编入索引,查询本身就不会很慢。
$qry = "SELECT login FROM registered WHERE login='$login'";
对于RDBMS来说,数千行应该没问题。它们旨在处理数百万,但您可以通过不选择所有列来节省一点内存。
答案 1 :(得分:3)
很少。
答案 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