Страница 1 из 2

ADO в Delphi

Добавлено: 15 мар 2004, 12:17
miland
На днях обнаружил интересную особенность. Есть приложение написаное на Делфи и работающее с ODBC источниками данных через TADOQuery. На селектах возвращающих небольшое количество записей ничего страшного не наблюдается, но если селект должен вернуть с сотню тысяч записей, то длительность выполнения запроса просто шокирует. Кто-нибудь сталкивался с такой проблемой?

Добавлено: 15 мар 2004, 16:40
AiK
miland, проблема вполне логичная - чем больше записей возвращаешь, тем дольше фетчится резалтсет :)

Добавлено: 15 мар 2004, 17:27
miland
Он фетчится неоправдано долго. Я уже достаточно различных резалтсетов из различных языков и баз перефетчил, что-то там не то.
OpenCursor примитивнейшего запроса идет 10 секунд... это не нормально, фетч тоже тормознутый...

Добавлено: 15 мар 2004, 17:33
AiK
miland, если ты делаешь бутерброд из ADO и ODBC, то быстро по определению быть не могёт.

Добавлено: 18 мар 2004, 09:15
GOS
miland, если ты делаешь бутерброд из ADO и ODBC, то быстро по определению быть не могёт.
Полностью поддерживаю, ADO не подходит бля оперирования большими объёмами...
Сравнил с IB и c BDE, так скорость ADO просто безобразная!

Добавлено: 18 мар 2004, 13:08
AiK
GOS, материться не обязательно :)
Скорость у ADO вполне приличная, если пользоваться прямыми драйверами, заточенными под ADO DB :) Правда таких далеко не так много, поэтому и используются будетрброды - сначала вызывается MS OLE DB provider for ODBC, потом ODBC, а ODBC идёт к native driver'у... вот и получается не быстро.
Кстати выборка ещё более-менее терпимо происходит, но вот если нужно инициализировать таблицу тысчёнкой другой записей - то это смерть всему получается

Добавлено: 18 мар 2004, 13:11
AiK
miland, ты бы ради приличия сказал, о каком ODBC источнике идёт речь... Да, и заодно сразу на больших объёмах посмотри как память расходуется...

Добавлено: 19 мар 2004, 14:56
miland
В том то вся и соль что хотелось бы чтоб работало с различными серверами. Экспериментировал с MS SQL. Но проблема явно не в сервере

Добавлено: 22 мар 2004, 19:24
Naeel Maqsudov
А на самом сервере этот запрос быстро выполняется?
Может дело в запросе, может там выборка с сортировкой по выражению или еще чего-нибудь вроде того, а?

Добавлено: 22 мар 2004, 19:33
miland
Запрос возвращающий 150 тыс. записей на сервере выполняется не больше секунды. Простой селект по одной таблице с выборкой по индексированому полю.