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

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

Оптимизировать перебор записей в таблице [D7, MSSQL]


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

WhiteCat ©   (2007-07-13 13:52:00) 

Здравствуйте.
Подскажите как решать следующую проблему? В таблице на 10000 записей в поле Adress "Россия, Москва, друг детства и т.д." необходимо, допустим, подстроку "Москва"  заменить на "Московская область".

Первоначально было такое решение настроить фильтр таблицы на Adress LIKE %Москва% и пройтись по оставшимся записям используя ReplaseString.
Видимо это плохое решение, поскольку возможности Filter ограничены, а использование OnFilterRecord, как мне кажется приведет к еще более медленному выполнению перебора. см.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1184266719&n=1

Пример абстрактный, но близкий к требуемому, поэтому прошу не пенять на неправильную реляционую модель.


Anatoly Podgoretsky   (2007-07-13 16:58:00) [21]

> WhiteCat  (13.07.2007 16:51:28)  [28]

Зачем фильтр?
Запрос с условием, но опять же Акцесс (JET) его не поддерживает.
Стоит подумать об смене СУБД


WhiteCat   (2007-07-13 16:51:00) [22]


> Можно, построчная обработка на клиенте.

Так первоначально и задумано, а чтоб оптимизировать хотел Filter использовать. Согласитесь построчно 10000 записей обработать солидная задержка. При включенном фильтре работает лучше поскольку остаются только записи, которые уже попадают под требуемый отбор.  Но в фильтре нет возможности учесть регистр поскольку "Москва","москва" ,"МОСКВА"   разные результаты.


WhiteCat   (2007-07-13 16:44:00) [23]


> а в записи только ссылки на них, тогда поиск например города
> "москва" будет заключаться в индексном, коротком (справочник
> меньше)

Ну просил же не обсуждать реляционную модель. Еще раз говорю, пример я  выдумал поскольку долго объяснять смысл реального поля. Ну считайте, что поле не адрес, а просто Comment и надо все нецензурные слова заменить.

И спорить о том что Access это не MSSQL не будем. Я признаю, что неточно указал СУБД. Виноват. Помогите лучше решить поставленную задачу. Ведь должно же быть красивое решение. Да еще уточнение операция не одноразовая, а выполняется довольно часто, поэтому желательно оптимизировать.


sniknik   (2007-07-13 16:35:00) [24]

> и Access - это все же из предложенных на форуме баз ближе всего к Microsoft SQL.
ты не представляешь насколько неправ... это что называется "и близко не лежало". имхо, но FB последних версий к MSSQL ближе чем access.

> Юмор же местных Бачинских и Стилавиных меня не вдохновляет.
не допускай. говори всегда то что есть. а не то что думаешь тоже самое/близкое.


Anatoly Podgoretsky   (2007-07-13 16:32:00) [25]


> Вопрос задан правильно

Да что ты говоришь.
Внимательно читаем вопрос
"Оптимизировать перебор записей в таблице [D7, MSSQL]"


sniknik   (2007-07-13 16:31:00) [26]

> можно ли решить поставленную проблему?
при нормально организованной базе это не проблема, даже попытки так сделать в нормальной не возникнет.

нормальная это с адресными справочниками -> страна, город, улица
а в записи только ссылки на них, тогда поиск например города "москва" будет заключаться в индексном, коротком (справочник меньше) поиске id москвы, и выборке связанных с ним из основной, тоже по индексному полю и к тому же числовому по которому все в разы быстрее чем с текстом...


Anatoly Podgoretsky   (2007-07-13 16:30:00) [27]

> WhiteCat  (13.07.2007 16:23:19)  [19]

Можно, построчная обработка на клиенте.


WhiteCat   (2007-07-13 16:29:00) [28]


> кто знает теперь,что еще ты скрываеш? ... теперь только
> помощь приколистов.

Та ничего я не скрываю, и честно говоря подколка, уважаемого мной, Anatoly Podgoretsky удивляет. Вопрос задан правильно, и Access - это все же из предложенных на форуме баз ближе всего к Microsoft SQL.
Юмор же местных Бачинских и Стилавиных меня не вдохновляет.


Anatoly Podgoretsky   (2007-07-13 16:25:00) [29]

В JET такой функции нет.


sniknik   (2007-07-13 16:25:00) [30]

> Предложенный запрос не сработал.
проверь в аксессе, создав и выполнив там этот запрос


WhiteCat   (2007-07-13 16:23:00) [31]


> у меня есть.


Версия ACCESS?
У меня Access XP. Предложенный запрос не сработал. В ключевых словах и в справке функции REPLACE не нашел. Вот все ключевые слова на R:
REAL REFERENCES  RESTRICT  REVOKE  RIGHT  ROLLBACK

Все же интересно, если не зацикливаться на функции REPLACE (все же, функция специфическая и не стандартизирована) можно ли решить поставленную проблему?


sniknik   (2007-07-13 16:22:00) [32]

> Хорошо! Допустим, что теперь вопрос понятен, могу я рассчитывать на помощь от специалистов?
кто знает теперь,что еще ты скрываеш? ... теперь только помощь приколистов.

Jan1   (13.07.07 15:53) [17]
> у меня есть.
ну так у тебя же аксесс! ;о) (в смысле программа)


Jan1   (2007-07-13 15:53:00) [33]


> Ничего не понимаю! Нету такой функции REPLACE!
>
> БД ACCESS, подключение  ADO

у меня есть.


йцу   (2007-07-13 15:50:00) [34]

http://www.psystatus.ru/


WhiteCat   (2007-07-13 15:45:00) [35]


> Тогда научись правильно вопрос задавать

Хорошо! Допустим, что теперь вопрос понятен, могу я рассчитывать на помощь от специалистов?


Anatoly Podgoretsky   (2007-07-13 15:32:00) [36]

Тогда научись правильно вопрос задавать


WhiteCat   (2007-07-13 15:29:00) [37]

Ничего не понимаю! Нету такой функции REPLACE!

БД ACCESS, подключение  ADO


Anatoly Podgoretsky   (2007-07-13 14:53:00) [38]


> К сожалению не знал что в SQL работает Replace.

Я тоже не знал, но у меня есть волшебная книга.


Anatoly Podgoretsky   (2007-07-13 14:52:00) [39]


> остальное - негру :)

Но именно основное, а не все


Anatoly Podgoretsky   (2007-07-13 14:50:00) [40]

> Ega23  (13.07.2007 13:57:03)  [3]

Можно и миллион вытащить


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

Наверх

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