Russian Qt Forum
Ноябрь 22, 2024, 12:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Оптимальный способ хранения в БД последовательности объектов...  (Прочитано 15037 раз)
Cyrax
Гость
« Ответ #15 : Март 20, 2008, 20:08 »

Спасибо, Tonal.

to WW
Tonal предложил вариант хранения последовательности без возможности получения объекта по индексу. Если существует способ хранения последовательности с этой возможностью при той же эффективности, я, естественно, выберу последний вариант.

Использование кластерного индекса по данной таблице, насколько я понимаю, это всего лишь альтернативное решение фрагменту "order by index" при упорядоченной выборке всех объектов. Не более того.

Цитировать
Представь ситуацию: пользователей N*1000 и все они активно изменяют данные (insert + delete). Вы представляете КАК будет тормозить Ваша программа?
Такие же тормоза будут и при удалении некоторого объекта из середины списка в случае реализации варианта, предложенного Tonal'ом (список с "дырками": при удалении - ничего не делаем, при добавлении - инкрементируем индексы всех последующих объектов).

Цитировать
Не делайте этого!!! Просто представьте, как вас будут ругать те, кто будет потом поддерживать Ваше решение и пытаться его масштабировать.
Решение ?
Записан
Tonal
Гость
« Ответ #16 : Март 20, 2008, 21:15 »

Почему без возможности. Всё довольно просто:
Код:
select first 1 skip :index t.col1, t.col2, t.col3, from table1 t order by t.num

Есть ещё прикольный способ поддерживать порядок и обойтись без сдвигов - на строковых ключах порядка (первичные к этому никакого отношения не имеют).:
Пусть изначально, у нас есть упорядоченный набор объектов с ключами:
"1", "2", "3", "4".
Нам надо вставить элемент в 3-тью позицию, между 2 и 3 - тогда его ключ будет "25":
"1", "2", "25", "3", "4"
Теперь опять в третью - ключ "225":
"1", "2", "225", "25", "3", "4"
Удаление - как обычно.

Ну и можно предусмотреть процедуру переиндексации, чтобы ключи в процессе жизни не становились всё более и более длинными. :-)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.