如果用户在表中显示其他不使用PHP


If user is in table show else do not PHP

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

不过,在我更进一步之前,假设我有100个用户,在我的页面上有这个查询会大大降低速度吗?基本上,我在索引页上有我的查询,所以当用户访问时,我希望它运行,并从表中提取我的所有数据。。。

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

简单的答案是否定的。对于合理数量的用户,您不应该看到显著的延迟。然而,如果你预计会有成千上万的用户,你最好使用任何数量的实践来优化性能,比如:

  • 分页:在查询和各种链接中使用LIMIT子句,以提供对所有用户记录的访问。这样,无论您的表增长多少,性能都会一直保持在较高水平。

  • 用户名的简单文本搜索表单。考虑一下必须浏览几百个用户才能访问某个特定的用户,而不是让服务器为您这样做。如果采用这种方式,请不要忘记对搜索将应用的字段进行索引,以确保最佳性能。

  • 索引您在查询中用作条件的字段,这在ndefontenay中有介绍,我只是为了完整起见才提到它。


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

 SELECT * FROM User WHERE active IS NOT NULL

注意:就性能而言,最好指定要检索的字段,而不是收集所有字段。例如,如果你想检索每个用户的用户名和电子邮件,你可以这样做:

 SELECT username, email FROM User WHERE active IS NOT NULL

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

您的查询如下:

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

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

create index idx_active 
on usertable
(active desc);

我使索引递减,使值1排在第一位(在我的示例中,1为活动0为非活动,活动列为整数)。

我认为,从长远来看,活跃的人也会比不活跃的人少得多。您将始终查询表usertable的一个子部分。

希望这能有所帮助。