2016-10-14 3 views
0

У меня есть этот запрос для таблицы с 14 тысячами строк ... потребовался навсегда для завершения вывода. Вот код:SQL-запрос занимает 60 секунд, чтобы завершить

$query="SELECT j6.Name, j.id, 
     SUM(j6.pts) + IFNULL(j.pts, 0) AS total 
     FROM joueurs2006 j6 LEFT OUTER JOIN joueurs j 
     ON (j.Name = j6.Name) 
     WHERE j6.pts != 0 GROUP BY j6.Name 
     ORDER BY total DESC 
     LIMIT 0,15"; 

То, что я хочу сделать, это собрать статистику из прошлых сезонов (все хранится в joueurs2006) и добавить статистику из текущей() Новостей Игроков. Он работал хорошо в течение нескольких лет, но теперь с 14K строк в таблице, он занимает навсегда, чтобы завершить. Спасибо за советы!

+1

Предлагаю немного прочитать [ИНДЕКСЫ] (http://stackoverflow.com/questions/2955459/what-is-an-index-in-sql), если вы еще этого не сделали. Это самое быстрое и простое решение «ускорить мой запрос». – Santi

+1

Какая база данных (SQL Server, Access, MySQL, Oracle ...) –

+0

база данных Я использую MySQL – user3470727

ответ

0

Это ваш запрос:

SELECT j6.Name, j.id, SUM(j6.pts) + IFNULL(j.pts, 0) AS total 
FROM joueurs2006 j6 LEFT OUTER JOIN 
    joueurs j 
    ON j.Name = j6.Name 
WHERE j6.pts <> 0 
GROUP BY j6.Name 
ORDER BY total DESC 
LIMIT 0, 15; 

Для этого запроса вы хотите индексы на joueurs2006(name, pts) и joueurs(name, pts). Это должно работать лучше.

+0

hanks Gordon работает как шарм – user3470727

+0

@ user3470727. , , Как быстро? –

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