Здравствуйте, 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 и контролировать кол-ло обрабатываемых записей в ручную, так?
За остальное спасибо.