![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как опеспечить уникальность записи в VARCHAR(255)? [D7, IB6.x]
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 индексных структурах. Эти индексные структуры могут оптимально использоваться только при работе со статической информацией и время от времени требуют оптимизации
Какие операции понимаеются под оптимизацией? Как ее можно реализовать?