Re: mysql select: сочетание order by по составному индексу и limit
rm-f@yandex.ru -> debian-russian@lists.debian.org @ Thu, 17 May 2007 15:48:27 +0400:
>> r> имхо: это потенциальные грабли и ловушка, по крайней мере для новичков
r> Mikhail Gusarov пишет:
>> Грабли будут всегда, если не понимать чётко postconditions любого
>> запроса. Сказано order by - значит будет order by, и ничего больше
>> не гарантируется: ни как эти order by соотносятся с другими
>> запросами, и не будет ли этот order by стабильной сортировкой.
r> Возможно.
r> Надеюсь у разработчиков MySQL были весомые причины по разному
r> использовать индекс в двух запросах:
r> 1) select ... order by F1 limit N
r> 2) delete ... order by F1 limit N
r> прим: F1 - первое поле составного индекса
Скажем так, у них нет весомых причин непременно использовать его
одинаково. А разным использование может быть, например, потому, что в
результате select они выдают все запрошенное (и значит, формируют ответ
перед выдачей - оно у них вроде бы делается именно так), а в результате
delete они удаляют, и ничего никуда не собирают. Для разных операций
возможны разные обходы второго уровня индекса.
А вообще использовать order by ... limit в delete - решение
категорически непереносимое, и рекомендуется им не пользоваться без
крайней необходимости. Стандартный (в смысле SQL-92) delete умеет
только where.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
Курицца - не пицца. (Итальянская пословицца)
Reply to: