1

我们的 MySQL 数据库有一个users表,logged_in, BOOL其中有一列在检测到用户登录或注销时设置。

SELECT COUNT(*) FROM users WHERE logged_in = 1在我们的网站上,我们会显示“用户登录到应用程序”,但出于性能原因,我很谨慎。

我们预计 users 表可能有几千行,但任何时候只有少数(比如 20 个)用户会登录。

有没有办法确保这个查询可以在 MySQL 中优化,可能涉及 KEY 或 VIEW?或者我是否需要像logged_in_users旁边的用户一样创建一个辅助表并更新它?

4

1 回答 1

0
  1. 如果上面有索引,logged_in则应该是一个非常快速的查询,因为登录的人数将非常少,与整个用户表相匹配(但是,logged_in = 0 可能不是很有效:))这是其中之一仅具有 2 个可能值的列上的索引可以对其中一个值进行超高效查询的情况。
  2. 不做count(*),做count(your_primary_key)。这样,如果您已为 logged_in 编制索引,则将覆盖整个查询以获得最佳性能。
于 2012-11-29T21:11:58.640 回答