Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Последовательная нумерация   Найти похожие ветки 

 
sdram ©   (2002-10-09 15:37) [0]

Подскажите Алгоритм (по возможности быстрый) как создавать значения индексных полей что бы при удалени - дополнении было-бы поменьше пропущенных номеров.


 
Johnmen ©   (2002-10-09 15:49) [1]

А где же правила хорошего тона ?


 
sdram ©   (2002-10-09 15:51) [2]


> А где же правила хорошего тона

А по правилам счетчиком нужно полизоваться?


 
Johnmen ©   (2002-10-09 15:58) [3]

Я имел в виду, какая же СУБД ?


 
sdram ©   (2002-10-09 16:01) [4]

На текущий момент Acces, но вообще интересует сама идея.


 
sdram ©   (2002-10-09 16:06) [5]

К примеру я пробовал так:
while fGen.dsIdToUid.Locate("uid", inttostr(j), []) do inc(j);
но очень медленно выходит.


 
Johnmen ©   (2002-10-09 16:08) [6]

Идеи сильно зависят не только от типа СУБД, но и от многопользовательское использование или нет...:)


 
sdram ©   (2002-10-09 16:11) [7]

Монопольный доступ.


 
Anatoly Podgoretsky ©   (2002-10-09 16:22) [8]

Тогда раз уж такое извращение, то лучше dec и не locate a Nexr/Prev
Но изврат сильный, что то не в порядке в консерватории


 
sdram ©   (2002-10-09 16:25) [9]

А чем Nexr/Prev лучше?


 
Best Before 2024   (2002-10-09 16:42) [10]

Можно попробовать так:

SELECT MIN(KeyID)+1 AS NextKeyID FROM XTable A
WHERE (NOT EXISTS (SELECT * FROM XTable B WHERE A.ID + 1 = B.ID))


 
Praco ©   (2002-10-09 17:05) [11]

Возможности аксесса закончатся гораздо раньше, чем будет исчерпан 4-х байтовый целый ключ.
Так что об экономии можно не думать, ИМХО.

Читал про такой простой метод:
1.генерится случайное целое(равномерный закон, максимальный диапазон)
2.полученный ключ проверяется на существование
3.если не существует, то вставка, иначе => п.1


 
sdram ©   (2002-10-09 17:12) [12]


> Praco ©

Похоже это самый быстрый из всех предложенных.
Спасибо всем.


 
sdram ©   (2002-10-09 17:15) [13]


> Johnmen ©

Нудный ты какой-то, столько спрашивал и ничего не предложил.


 
Johnmen ©   (2002-10-09 17:22) [14]

Если тебе мало, то предлагаю :
SELECT MAX(id)+1 FROM Table (самое быстрое...)



 
Praco ©   (2002-10-09 17:32) [15]

sdram ©
Еще способ - использование GUID. Ключ длиннее, зато гемороя с генерацией меньше.



Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-101141
Fishka
2002-10-10 15:09
2002.10.31
Права на создание таблицы и ее ограничений


3-101068
Shadow
2002-10-13 15:59
2002.10.31
Как можно без особой мороки прочитать DBF-базу и сконвертировать


14-101465
Best Before 2024
2002-10-10 17:25
2002.10.31
Раньше было хорошо!


1-101250
Dimich1978
2002-10-22 09:07
2002.10.31
Где можно посмотреть пример для просмотра удаленного реестра.


1-101263
Кирилка
2002-10-21 16:53
2002.10.31
Вопрос чайника....