0

我有一张大约有 20M 记录的表,我将对该表的某些字段进行简单计算。但是获取数据需要很长时间。我正在考虑所有记录,这就是图片中没有索引的原因。让我解释 :

Table : UserLoginDet
        ------------ 
LoginID    INT
UserID     INT
Date       DATETIME
SpentTime  INT

现在我想要这样的仪表板总数。

SELECT COUNT(1) NoOfLogins, DISTINCT(UserID) NoOfUsers, SUM(SpentTime) UsedTime;

此查询需要 5-6 秒才能执行。好不好。我认为只有 20M 条记录非常慢。我应该怎么做?

编辑:我的解释报告:

id Select_type  table        type  possible_key  key      key_len  ref   rows    Extra
-- -----------  -----        ----  ------------  -------  -------  ---   ------  ------ 
1  PRIMARY  UserLoginDet     range PRIMARY      PRIMARY  3              797143  Using where

谢谢

4

1 回答 1

0

您可以运行EXPLAIN SELECT COUNT(1) NoOfLogins, DISTINCT(UserID) NoOfUsers, SUM(SpentTime) UsedTime;以查看索引使用情况的详细报告。

于 2013-08-13T11:30:53.930 回答