mysql выберите минимальные проблемы с производительностью

У меня есть этот запрос, чтобы выбрать минимальный идентификатор. Кажется, что это работает нормально в первые несколько кликов, но становится очень вялым, когда я продолжаю нажимать кнопку, которая вызывает этот запрос.

любые обходные пути для этого запроса?

"select min(t1.blog_id) as min_id 
 FROM 
       (SELECT blog_id FROM myblogs_view 
        where blog_id<'$id' ORDER BY blog_id DESC LIMIT 10) as t1";

person drew    schedule 30.04.2011    source источник
comment
Что означает Продолжать нажимать? Этот запрос каждый раз выполняется точно одинаково или что-то меняется?   -  person Richard H    schedule 30.04.2011
comment
это запрос для моей следующей страницы, чтобы получить минимальный идентификатор. поэтому каждый раз, когда я нажимаю кнопку следующей страницы, этот запрос выполняется.   -  person drew    schedule 30.04.2011


Ответы (2)


Попробуйте с

SELECT MIN(blog_id) AS min_id
FROM myblogs_view
WHERE blog_id < '$id'
GROUP BY blog_id

У вас есть индекс в столбце blog_id?

Как правило, когда вы имеете дело с медленным запросом, вы можете использовать EXPLAIN< /a>, чтобы увидеть, как MySQL выполняет запрос.

person Jonas Kongslund    schedule 30.04.2011

Я хотел бы добавить одну вещь: если вы используете свой запрос для разбиения на страницы, вам следует взглянуть на Как ускорить запрос MySQL с большим смещением в предложении LIMIT?

Вы спросите, почему это актуально? Вы описываете, что ваш запрос выполняется вяло после того, как вы нажали на следующую страницу, когда вы продолжаете нажимать. Это вероятно, когда вы достигли большого смещения. Я предполагаю, что вы используете свой запрос для вычисления смещения, которое затем используете для извлечения соответствующих записей с запросом предельного смещения. Это правильно? Если это так, то ваш другой запрос может получить пользу от предоставленной мной ссылки (я не автор этого ответа, отдайте должное там, где это необходимо).

person Sten-Åke    schedule 30.04.2011