2013-08-13 2 views
0

У меня есть одна таблица с приблизительно 20-мегапиксельными записями, и я собираюсь просто вычислить некоторые поля этой таблицы. Но для получения данных требуется много времени. Я рассматриваю все записи, поэтому ни один индекс не появляется на картинке. Поясню:Выполнение запроса Mysql очень медленно

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

Теперь я хочу, общей для моей приборной панели, как это.

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

Этот запрос занимает 5-6 секунд для выполнения. Это нормально или нет. Я думаю, что это очень медленно для всего лишь 20 миллионов записей. Что мне делать?

Редакцией: Мой объяснить доклад:

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

Благодаря

+0

Это 20 тысяч или 20 миллионов? Пожалуйста, исправьте typo ... – PinnyM

+0

@PinnyM, Это миллион –

+0

Время кажется нормальным для полного сканирования таблицы. – Vatev

ответ

0

Вы можете запустить EXPLAIN SELECT COUNT(1) NoOfLogins, DISTINCT(UserID) NoOfUsers, SUM(SpentTime) UsedTime; увидеть подробный отчет об использовании индекса.

+0

Привет @ Paolo-casciello, я проверил использование объяснения, и этот запрос использовал PRIMARY KEY для поиска. и показ «Использование где» в «Экстра». Это нормально? –

+0

@ManishSapkal вы можете добавить результат объяснения к своему оригинальному сообщению? –

+0

Привет @ Paolo-casciello, я добавил вывод объяснения на мой пост –

Смежные вопросы