Деревья, оптимизация выборки

Butjok

Новичок
Деревья, оптимизация выборки

Здравствуйте.

Дано: древо комментариев в таблице `comments` вида:
Код:
id | path
1 | 1
2 | 1.2
3 | 1.2.3
4 | 1.4
5 | 1.4.5
Выборка:
Код:
SELECT * FROM comments ORDER BY path
Это будет работать медленно из-за сортировки строк, верно?

Вопрос: не будет ли целесообразно создать ещё один столбец, например, sort и во время изменения таблицы выполнять запрос:
Код:
SET @i = 0;
UPDATE comments SET sort = (@i := @i + 1) ORDER BY path
И при выборке делать сортировку по этому полю?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
И при выборке делать сортировку по этому полю?
И ты думаешь, что filesort-а по этому полю уже не не будет?

-~{}~ 17.02.08 14:50:

Если тебя пугает using filesort в екстре - измени сортировку через Alter table
 

Wicked

Новичок
может быть проще использовать nested sets?

-~{}~ 17.02.08 19:30:

кстати, а как решается вопрос с тем, что строки могут сортироваться неправильно:
"1.1" < "1.10" < "1.2" ?
 

nail

Новичок
"UPDATE comments SET sort = (@i := @i + 1) ORDER BY path" - перебирает все строки таблицы, тогда уже nested sets становится эффективнее.

"Это будет работать медленно из-за сортировки строк".
Скорее из-за размера индекса.

Если уж использовать "0001.002.003", тогда можно упаковывать это в 2-3 64-битных поля, быстрее будет.
 

Фанат

oncle terrible
Команда форума
Butjok
у тебя миллион комментариев ,что ли к каждой записи, что ты так пугаешься сортировки?
 
Сверху