Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2017, 17:12   #1
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию Ускорение Update

База на FireBird 2.1, клиент написан на Делфи 2007.
Задача.
Имеются 2 таблицы TX и ТХ2 с одинаковым полем X (varchar (8))
В таблице ТХ имеется имеется поле заполненное Y.

Нужно сравнить значение ТХ.Х=ТХ2.Х и заполнить поле таблицы ТХ2.Y значениями ТХ1.Y.
В двух таблицах по 100 тыс записей.
Прямым перебором долго.
Помогите , плиииз!
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 17:19   #2
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию

Пригоден ли метод Locate?
Использую DATASET

Последний раз редактировалось pirireys; 05.04.2017 в 17:25.
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 17:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

каким перебором?!!
Для таких целей нужно использовать SQL


если поле X уникальное в таблице TX
просто один запрос UPDATE
примерно такого вида

Код:
UPDATE TX2
set TX2.Y = (select TX.Y from TX where TX.X=TX2.X)
WHERE 
TX2.X in 
(select TX.X from TX where TX.X=TX2.X)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.04.2017, 17:56   #4
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию

прямым перебором долго, до 14 часов длится
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 17:56   #5
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию

в ТХ значения поля х уникальные, а в ТХ2 их может быть сколь угодно

поэтому SQL не подходит. Медленно получается.
С помощью делфи как то можно это сделать? Как использовать индексы?

Последний раз редактировалось pirireys; 05.04.2017 в 17:59.
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 18:03   #6
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию

Может я неправильно объяснил.
Две таблицы содержат одинаковые поля Х, но разные значения записей.
По значению поля Х первой таблицы , надо выбрать записи с теми же значениями и записать в другое поле Y второй таблицы, значения поля Y первой таблицы.

А проблема заключается в скорости. В SQL я знаю как это сделать, но это слишком медленно. Поэтому спрашиваю, можно ли в делфи используя индексы ускорить процесс?

Последний раз редактировалось pirireys; 05.04.2017 в 18:06.
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 18:16   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Навряд ли, все равно потом обновления в базу записывать. Лучше в таблицах индексы сделать по полю x и update
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.04.2017, 18:19   #8
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Навряд ли, все равно потом обновления в базу записывать. Лучше в таблицах индексы сделать по полю x и update
Вот это я и хочу чтоб объяснили. Создание индексов и работа с ними для update
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 18:21   #9
pirireys
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
сделать по полю x и update
Пример?
pirireys вне форума Ответить с цитированием
Старый 05.04.2017, 18:24   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Пример чего? Создания индексов для таблицы базы данных? Смотри справку по SQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Центростремительное ускорение Niro Помощь студентам 11 11.01.2013 20:32
Ускорение программы С++ rUs_LAN Помощь студентам 4 16.08.2012 13:57
Ускорение времени rinasmichael Win Api 3 10.11.2011 09:15
Ускорение компиляции jetyb Помощь студентам 4 13.09.2011 23:38
ускорение виндовс voland123454321 Windows 22 04.09.2010 12:16