|
|
|
| Здравствуйте.
Стоит задача оптимизировать запрос select * from table order by field1, field2 desc ,...
Вроде бы простой запрос, но я читал что order сильно тормозит запросы в больших таблицах.
Т.е надо отсортировать оптимальным образом таблицу по четырём её полям в заданом порядке важности сортировки... т.е сначала сортировка по field1, потом по field2 и т.д.
Как это лучше всего реализовать? | |
|
|
|
|
|
|
|
для: axxil
(02.08.2005 в 11:02)
| | Ничего здесь сделать нельзя с запросом... можно проиндексировать поля field1, field2 - тогда будет всё быстро или провести сортировку по field1, field2 физически при помощи оператора ALTER TABLE
ALTER TABLE tbl ORDER BY field1, field2
|
| |
|
|
|
|
|
|
|
для: cheops
(02.08.2005 в 13:13)
| | Спасибо.
А эту физическую сортировку надо будет проводить каждый раз? Или достаточно один раз провести а потом новые строки будут добавлятся в порядке заданной сортировки?
И ещё при обычном индексировании надо использовать составной индекс по всем сортировочным полям или необходимо каждое поле проиндексировать? | |
|
|
|
|
|
|
|
для: Axxil
(02.08.2005 в 13:44)
| | Нет физическая сортировка только на один раз, она поможет обычной ORDER BY - часто её проводить не следует. | |
|
|
|
|
|
|
|
для: cheops
(02.08.2005 в 13:47)
| | быстро :)
А при обычной сортитровке надо использовать составной индекс или каждое поле надо индексировать отдельно? | |
|
|
|
|
|
|
|
для: Axxil
(02.08.2005 в 13:50)
| | Если не планируется использовать столбцы в других операциях (WHERE-условия, другие сортировки) то можно использовать составной индекс, если планируется, то лучше проиндесировать их отдельно. | |
|
|
|
|
|
|
|
для: cheops
(02.08.2005 в 13:55)
| | спасибо большое | |
|
|
|