我们的MySQL数据库有一个users
表,其中logged_in, BOOL
列是在检测到用户登录或注销时设置的。
在我们的网站上,我们会显示“登录到应用程序的用户”,但出于性能原因,我担心只是执行SELECT COUNT(*) FROM users WHERE logged_in = 1
。
我们希望users表可能有几千行,但是任何时候都只会有少数(例如20个)用户登录。
有没有办法确保可以在MySQL中优化此查询,可能涉及KEY或VIEW?或者我是否需要创建像logged_in_users
旁边用户这样的辅助表并更新它?
答案 0 :(得分:0)
logged_in
上有一个索引,那么它应该是一个非常快速的查询,因为登录的数量相当小,并且整个用户表都很小(但是,logged_in = 0可能效率不高) :))这是其中一个例子,其中只有2个可能值的列上的索引可以对其中一个值进行超高效查询。count(*)
,执行count(your_primary_key)
。这样,如果您已对logging_in建立索引,则会覆盖整个查询以获得最佳性能。