Задавайте вопросы, мы ответим
Вы не зашли.
Есть 2 таблицы
kz_plrstats 20,000 записей
kz_stats - 162,000 записей
Есть запрос который берет инфу с двух таблиц и сортирует её по полю, выводит с помощью LIMIT кол-во записей для постраничной навигации. Вообщем если в таблице kz_plrstats в поле country определенной стране принадлежит много записей...то запрос выполняется по 6 секунд
Могли бы помочь как то оптимизировать его?(
SELECT DISTINCT s.name, p.procount, p.mapcount,p.ingame, p.country,p.authid FROM `kz_plrstats` p, `kz_stats` s WHERE p.country='ru' AND p.authid=s.authid ORDER BY p.procount DESC,ingame DESC LIMIT 0, 50
Неактивен
Выполнение данного запроса ускорит составной индекс на полях s.authid и s.name. Также пригодится индекс на p.country.
Неактивен
покажите структуру таблиц (т.е. результат команд show create table kz_plrstats и show create table kz_stats)
и план выполнения запроса - explain ваш запрос;
Неактивен
kz_plrstats
Неактивен
Я бы попробовал поменять ключики. Нужен на p (country, procount, ingame).
Неактивен
последющий запрос точно такой же уже будет 0.0006 сек - кешированный видимо
как бы сделать первоначальный запрос быстрее(( когда лазишь по веб-скрипту...на 4 сек фризит страничку ((
как поменять ключики?
тут речь была о составном индексе...что это такое?
поле authid содержит ид буквенно-численные...имеет ли смысл для полей этих использовать FULLTEXT индекс?
Отредактированно lexikon (15.12.2011 09:13:50)
Неактивен
paulus написал:
Я бы попробовал поменять ключики. Нужен на p (country, procount, ingame).
Вот так добавьте ключ.
Отредактированно deadka (15.12.2011 15:33:13)
Неактивен
добавил...4.2 секунды первый раз, второй 0.0005
еще как то можно добится результата лучшего?
Неактивен
А EXPLAIN?
Неактивен
Неактивен
Хм. А так?
SELECT STRAIGHT_JOIN DISTINCT s.name, p.procount, p.mapcount,p.ingame, p.country,p.authid
FROM `kz_plrstats` p JOIN `kz_stats` s ON p.authid=s.authid
WHERE p.country='ru'
ORDER BY p.procount DESC,ingame DESC LIMIT 50
Как-то оно странно выбирает последовательность.
Неактивен