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

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

Как опеспечить уникальность записи в VARCHAR(255)? [D7, IB6.x]


Страницы:   1 2 3

Shama_n ©   (2004-06-29 18:23:00) 

База данных InterBase примерно на 15000 записей и в поле типа VARCHAR(255) нужно недопустить дублирования одинаковых записей. Данные в БД добавляются очень часто и выполнение проверки уникальности каждого значения методами поиска. Подскажите максимально быстрый метод обеспечения уникальности значения?


Shama_n   (2004-06-30 19:29:00) [1]

Автор уже решил проблему установкой еще 128Mb памяти на сервер :D Вместо 3 часов все прошло за 1 минуту. Теперь буду почаще обращать внимание на железо


TohaNik   (2004-06-30 17:40:00) [2]

Извинения автору что передергиваю ветку не в том направлении


TohaNik   (2004-06-30 17:38:00) [3]

< Danilka ©  (30.06.04 16:47) [48]
Да правильно все - спросить вид продукции потом поочереди тип параметра потом знач. параметра

Интересует тот случай когда даже структурирование не дает достаточно малой выборки а более всего
TohaNik ©  (29.06.04 19:53) [11]
>при вводе "Оце" - возвращалось "ацетон"
Интуитивно - вроде как от длины сравниваемой строки допускается допускается определенное кол-во несовпадений т.к. введя "оцы" не возвращалось ничего. Особенности фонетики
точно не учитывались.


Danilka   (2004-06-30 16:47:00) [4]

[46] TohaNik ©   (30.06.04 16:34)
> А если это подшипники с размерами и позициями которых которых
> м.б. до нескольких тысяч

то нефиг на каждый размер новую запись городить: размеры это детальная таблица.


Курдль   (2004-06-30 16:36:00) [5]


> Vlad ©   (29.06.04 19:26) [7]
> Как у кого ? У меня на Оракле индекс уникальный ставится
> в таком случае :-)))

Я тож Оракл люблю, но не поверишь - ни разу не понадобилось уникальный индекс на текстовое поле ставить. Пример из богатого опыта можно? :)


TohaNik   (2004-06-30 16:34:00) [6]

>И вообще, где вы видели малосольные огурцы в банках? Если в банках, то уже соленые, а не малосольные.
:)
К TohaNik ©  (30.06.04 16:06) [44] набирать достаточно "огур сол"

А если это подшипники с размерами и позициями которых которых м.б. до нескольких тысяч. И здесь можно структурировать напр по диапазонам. Но ИМХО набрав "Подш 10 20" проще


Danilka   (2004-06-30 16:18:00) [7]

Вообще, как правило, когда так много позиций товаров используют группу/подгруппу товаров, 2 уровней достаточно и на 50тыс. наименований, чтобы не совершать таких ошибок.
Сначала заходишь в группу, например "овощи", затем подгруппу "консервированые", и получаешь список стеклянных банок, т.к. их наврядли будет больше чем несколько десятков, то чтобы спутать и заново ввести "Огурцы малосольные в стеклянных банках" когда уже есть "Малосольные огурцы в стеклянных банках" это надо быть дурой.
И вообще, где вы видели малосольные огурцы в банках? Если в банках, то уже соленые, а не малосольные.


TohaNik   (2004-06-30 16:06:00) [8]

AndB  (30.06.04 15:03) [43]

А причем здесь нормализация???
Просто представь базу из одной таблицы в которой могут быть
- Огурцы малосольные в стеклянных банках
- Малосольные огурцы в стеклянных банках
- Огурцы малосольные в банках из стекла)
Все это один еда т.е. один продукт ,а записи три, а надо одна.
И   "огу мал в ст ба"очень даже поможет не ввести 2 последние


AndB   (2004-06-30 15:03:00) [9]

2 Shama_n ©   (29.06.04 21:49) [26]
> В поле хранится наименование товара. В основном больше 70 символов
но ведь не одним же словом! значит название составное, а значит Алхимик ©   (30.06.04 01:05) [28]
Любопытно просто! Если название товара "Огурцы малосольные в стеклянных банках" - вы, чего? ждете (см. [11]), что "пользователь если в суть врубился сам через пробел части слов"вводить будет? Это как? "огу мал в ст ба"?
Нормализируй!


Tomkat   (2004-06-30 14:51:00) [10]

Если вы слышали о правилах нормализации таблиц, то попробуйте привести вашу таблицу хотябы к первой нормальной форме ....


Sandman25   (2004-06-30 14:39:00) [11]

[38] Danilka ©   (30.06.04 14:29)

while not Table1.Eof do
begin
 Table2.First;
 while not Table2.Eof do
 ...
end;


Vlad   (2004-06-30 14:39:00) [12]


> Danilka ©   (30.06.04 14:29) [38]


> Смотря где пробегает, может на клиенте..
> while not table1.eof ...

и еще вдобавок машина IBM XT с проц.8088 :-)


Johnmen   (2004-06-30 14:33:00) [13]

>Danilka ©   (30.06.04 14:29) [38]

Ну если "пробегает" в этом смысле, в прямом, то не удивительно...:)
Верить можно.


Danilka   (2004-06-30 14:29:00) [14]

[37] Johnmen ©   (30.06.04 14:23)
Смотря где пробегает, может на клиенте..
while not table1.eof ...
:))


Johnmen   (2004-06-30 14:23:00) [15]

>Danilka ©   (30.06.04 14:15) [35]
>Vlad ©   (30.06.04 14:15) [36]

Это понятно. Но для одной записи он в среднем пробегает 1 х 15 000 / 2.  Потом, возможно, вставляет. И это занимает 1.5 сек ???
"Не верю !" (с)


Vlad   (2004-06-30 14:15:00) [16]


> Johnmen ©   (30.06.04 14:05) [34]


> У тебя IBM XT с проц.8088 ? Или у тебя/у меня тяжелый бред
> ?

Так у него же еще какой-то алгоритм отбора дублей работает :-)


Danilka   (2004-06-30 14:15:00) [17]

[34] Johnmen ©   (30.06.04 14:05)
Дык, а если у него индекса нет и он в среднем пробегает 7 000 х 15 000 / 2 = 52.5 мильенов записей, чтобы определицца, уникальная она или нет. :))


Johnmen   (2004-06-30 14:05:00) [18]

>в базу из 15000 записей необходимо загнать только
>недублирующиеся в БД значения примерно из 7000 записей

>Сейчас уходит по 3-4 часа времени

Т.е. в лучшем случае выходит ~1.5 сек на запись...:)
У тебя IBM XT с проц.8088 ? Или у тебя/у меня тяжелый бред ?


Vlad   (2004-06-30 13:56:00) [19]


> Shama_n ©   (30.06.04 13:47) [32]

В SQL серверах есть такое понятие как оптимизатор запросов.
Это такой крендель, который анализирует твой SQL запрос, и выбирает наилучший (оптимальный) по его мнению метод обработки данных, а так же подбирает нужные индексы.
Иногда оптимизатору можно явно указать какой метод использовать.
Но тебе вероятно до этого еще далеко.

> Сейчас уходит по 3-4 часа времени

Судя по этому, у тебя либо неверно построен SQL запрос, либо
нет необходимых индексов для его оптимального исполнения.


Shama_n   (2004-06-30 13:47:00) [20]

Цитата: Большинство существующих систем главным образом основаны на B-tree индексных структурах. Эти индексные структуры могут оптимально использоваться только при работе со статической информацией и время от времени требуют оптимизации

Какие операции понимаеются под оптимизацией? Как ее можно реализовать?


Страницы:   1 2 3

Наверх

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