Re[2]: про LIMIT и скорость выполнения запроса
От: BugMan  
Дата: 01.08.04 18:48
Оценка:
Здравствуйте, vvaizh, Вы писали:

V>Здравствуйте, BugMan, Вы писали:


BM>>если это имеет значение (в чем я сомневаюсь) то разговор пойдет про mySQL....


BM>>Вобщем пытался я оптимизировать один запросец (вернее их там несколько, но это не важно) и подумалось мне что LIMIT на скорость его выполнения никак не влияет, во всяком случае если в запросе присутствует ORDER BY, а влияет только на обьём памяти занимаемый результатом....

BM>>Прав я или нет?
BM>>Вопрос с одной стороны вроде простой, но с другой не понятно где искать ответ, во всяком случае в моей книжке про это ничего не сказано....

V>если нет в книжке, ищи в онлайне..

V>если и там нет, сверься с английским вариантом..
V>вот в частности по твоей проблеме:

V>http://dev.mysql.com/doc/mysql/ru/LIMIT_optimisation.html


V>

V>В некоторых случаях, когда используется LIMIT # и не используется HAVING, MySQL будет выполнять запрос несколько иначе:

V>Если при помощи LIMIT выбираются только несколько строк, MySQL будет использовать индексы в тех некоторых случаях, когда он обычно предпочел бы делать полное сканирование таблицы.
V>Если LIMIT # используется с ORDER BY, MySQL закончит сортировку, как только найдет первые # строк, вместо того, чтобы сортировать всю таблицу.
V>При сочетании LIMIT # с DISTINCT MySQL остановится, как только найдет # уникальных строк.

Надо ли это понимать что результат использования ORDER BY + LIMIT непредсказуем?
Не совсем понятно какой смысл может иметь выборка скажем первых 30 записей и последующая их сортировка... хотя может и имеет, но это точно не то что мне нужно. Т.к. мне требуется взять первые 30 записей уже отсортированной таблицы.
Видимо придется избавиться от LIMIT и контролировать кол-ло обрабатываемых записей в ручную, так?

За остальное спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.