如果用户在表显示,否则不要PHP

时间:2012-07-10 21:50:27

标签: php mysql

我的网站上有一个页面,如果我的表中的'active'列不为null,则显示我的用户,如果不是,请不要打扰。

在我走得更远之前,说我有100个用户,在我的页面上查询会减慢很多速度吗?基本上我在我的索引页面上有我的查询,所以当用户访问我希望它运行时,从我的表中提取所有数据......

while($r = $q->fetch(PDO::FETCH_LAZY)){
    echo '<div class="user">'.$r["user"].'</div>';
}

2 个答案:

答案 0 :(得分:1)

它看起来更像是一个SQL问题,而不是一个PHP问题。

您的查询如下所示:

从usertable中选择username,fullname,whatever_else,其中active = 1;

如果在活动列上创建索引,这应该是一个非常快速的查询:

create index idx_active 
on usertable
(active desc);

我使索引下降,以便首先排列值1(在我的示例中,1是活动的0非活动且活动列是整数)。

我认为从长远来看,你的活跃人数会比不活跃的人少得多。您将始终查询表usertable的小子结构。

希望这有帮助。

答案 1 :(得分:1)

简短的回答是否定的。对于合理数量的用户,您不应该看到明显的延迟。但是,如果您预计会有数千名用户,那么最好使用任意数量的做法来优化性能,例如:

  • 分页:对您的查询和各种链接使用LIMIT子句,以提供对所有用户记录的访问权限。这样,无论您的桌子增长多少,性能都会保持不变。

  • 用户名的简单文本搜索表单。考虑到只需要浏览几百个用户来访问特定的用户,而不是让服务器为您执行此操作。如果你这样做,不要忘记索引搜索将应用的字段,以确保最佳性能。

  • 将您正在使用的字段作为查询条件的索引,这些字段由ndefontenay涵盖,我只是提及它的完整性。


编辑:关于你的问题,如果你想要的是让字段active不为空的所有用户,你可以这样做:

 SELECT * FROM User WHERE active IS NOT NULL

小注意事项:在性能方面,最好指定要检索的字段,而不是收集所有字段。例如,如果您想要为每个用户检索用户名和电子邮件,可以这样做:

 SELECT username, email FROM User WHERE active IS NOT NULL