|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.08.2008, 10:33 | #1 |
Пользователь
Регистрация: 23.07.2008
Сообщений: 69
|
Как ускорить работу с сетевой БД
Добрый День!
Подскажите пожалуйста как быть.. Занимаясь согласованием двух таблиц разных бд столкнулся вот с чем: i:=0; AdoQuery1.SQL.Text:='SELECT Code FROM Tabl1'; AdoQuery1.Open; while not AdoQuery1.Eof do begin inc(i); AdoQuery1.Next; end; AdoQuery1.Close; ..замечу что в цикле будет не подсчет записей, а само сравнение с записями другой таблицы.. так вот в таблице Tabl1 находится 800000 записей.. И только вот такой переход на след. запись AdoQuery1.Next; занимает порядком 5 минут на 600-700 записей, и чем дальше тем медленнее.. СУБД MSSQL 2000. AdoQuery1 связывал с AdoConnection, а также делал напрямую через ConnectionString разницы никакой.. Подскажите как можно ускорить?
I like beer.. more beer..
|
21.08.2008, 11:04 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
отказываться от идеи вытягивать миллион записей на клиента!!
Например, написать хранимую процедуру, чтобы сервер обрабатывал и сравнивал записи у себя внутри. Или, если по другому никак нельзя (ну, например, сравнение идёт с данными, которые есть только на клиенте), тогда расслабится и ждать, ждать, ждать.. (минуты, часы, дни... :-( ) p.s. Ну, возможно поможет создание индекса по полю Code... но, повторю, тянуть записи на клиента — это неверная дорога... Road to Hell... ;-( |
21.08.2008, 11:59 | #3 |
Пользователь
Регистрация: 23.07.2008
Сообщений: 69
|
Спасибо Сергей, я конечно рассматривал как вариант написание хранимой процедуры.. но все же надеялся на решение средствами Адо, так как опыт написание хранимых процедур не велик.
Но все же в гугле нашел я ссылочку на решение почти такой же проблемы.. однако подробного описания никто не привел.. лишь намек на то что нужно использовать AdoDataSet..
I like beer.. more beer..
|
21.08.2008, 12:16 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я вообще этого кода не пойму...
Почему бы просто не сделать JOIN запрос?
I'm learning to live...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как ускорить загрузку битмапа в tImage | Altera | Мультимедиа в Delphi | 10 | 24.03.2008 17:39 |
Как ускорить выполнение макросов | tat-besidovska | Microsoft Office Excel | 1 | 22.01.2008 12:12 |
Помогите пожалуйста ускорить работу по реконструкции моста | Геодезистка | Помощь студентам | 10 | 07.10.2007 00:05 |