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

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


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

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


此查询需要5到6秒钟才能执行。可以吗?我认为仅2000万条记录的速度非常慢。我该怎么办?

编辑:
我的解释报告:

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


谢谢

最佳答案

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

关于mysql - MySQL查询执行非常慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18207774/

10-12 17:27