Запрос MySQL с лимитом и смещением выполняется очень медленно

Возможный дубликат:
MySQL запрос с ограничением и большим смещением занимает вечность

Моя таблица содержит 25 000 строк, и я использую разбиение на страницы для отображения всех строк на странице. Если для моего лимита страниц установлено значение 10 строк на страницу, то каждая страница отображается очень быстро. Однако, если я изменю размер ограничения страницы на 250 строк на страницу, загрузка таблицы (отображение записей) займет от 30 секунд до 1 минуты. Запрос, который я использую, таков:

SELECT SQL_CALC_FOUND_ROWS Merchants.*, DataSources.DsISOName, PrName
FROM Merchants 
INNER JOIN DataSources ON MDsID=DsID 
INNER JOIN Processors ON PrID = DsType
ORDER BY MDBA LIMIT 0, 250

Это то, что я получаю, когда загружаю страницу первой. Предельные числа 0, 250 получают изменения, если я меняю страницу, поэтому, если я посещу страницу 2, лимит изменится на:

  LIMIT 250, 500 

Если кто-то видит проблему с моим запросом, пожалуйста, дайте мне знать. Я не могу понять, почему загрузка таблицы занимает 1 минуту, когда на страницу загружается 250 строк. В таблице mysql я пытался использовать индексы для разных идентификаторов, но с той же скоростью.


person Giorgi    schedule 01.10.2012    source источник
comment
Отладьте его, выведите фактический запрос и «объясните» его.   -  person Alfabravo    schedule 02.10.2012
comment
Смотрите вопрос, с которым я только что связался. В коротких версиях limit со смещением работает медленно. Вероятно, вы сталкиваетесь с этой проблемой при размере страницы 250, потому что вы перемещаетесь по таблице в 25 раз быстрее (поэтому вы замечаете проблему гораздо раньше).   -  person Brendan Long    schedule 02.10.2012