NickНу в общем смотри, как получается.
Алгоритм сортировки ТЗ:
- для каждой строки ТЗ последовательно получаем значение ключа
- сортируем
Алгоритм сортировки ИТ:
- строим дерево, при этом на каждое сравнение двух величин получаем значение ключа
Кеш здесь один и тот же.
Просто на 40 тыс. строк как раз заметно насыщение этого кеша и потеря его эффективности.
Ясно, что для построения дерева требуется явно большее число сравнений, чем N, - отсюда и провал в скорости.
Максимум, что можно сделать - это точно также заранее рассчитать ключи, а затем уже их сравнивать.
Получишь время, сравнимое с временем сортировки ТЗ.
Но недостижимо далекое от чистого времени построения индекса без обращения к базе.
Даже, если заполнение ключей реализовать внутри 1cpp.
Короче,
kms писал(а) 07. Июля 2008 :: 09:42:Задача нормально не решается.
Проще получить дополнительные значения для сортировки - и уже по ним строить внутренние индексы.
Факт.
Так что так и запишем: индексы по представлениям объектов
неэффективны.
Они рождены неэффективными и умрут неэффективными, увы.
К счастью, в свое время было сделано все, чтобы без них можно было обойтись.