Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Последовательная нумерация


sdram ©   (2002-10-09 15:37:00) 

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


Praco   (2002-10-09 17:32:00) [1]

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


Johnmen   (2002-10-09 17:22:00) [2]

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


sdram   (2002-10-09 17:15:00) [3]


> Johnmen ©

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


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


> Praco ©

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


Praco   (2002-10-09 17:05:00) [5]

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

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


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

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

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


sdram   (2002-10-09 16:25:00) [7]

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


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

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


sdram   (2002-10-09 16:11:00) [9]

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


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

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


sdram   (2002-10-09 16:06:00) [11]

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


sdram   (2002-10-09 16:01:00) [12]

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


Johnmen   (2002-10-09 15:58:00) [13]

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


sdram   (2002-10-09 15:51:00) [14]


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо