ADO в Delphi

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

miland
Сообщения: 13
Зарегистрирован: 05 мар 2004, 10:30
Контактная информация:

15 мар 2004, 12:17

На днях обнаружил интересную особенность. Есть приложение написаное на Делфи и работающее с ODBC источниками данных через TADOQuery. На селектах возвращающих небольшое количество записей ничего страшного не наблюдается, но если селект должен вернуть с сотню тысяч записей, то длительность выполнения запроса просто шокирует. Кто-нибудь сталкивался с такой проблемой?
Филь глюк!
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

15 мар 2004, 16:40

miland, проблема вполне логичная - чем больше записей возвращаешь, тем дольше фетчится резалтсет :)
Даже самый дурацкий замысел можно воплотить мастерски
miland
Сообщения: 13
Зарегистрирован: 05 мар 2004, 10:30
Контактная информация:

15 мар 2004, 17:27

Он фетчится неоправдано долго. Я уже достаточно различных резалтсетов из различных языков и баз перефетчил, что-то там не то.
OpenCursor примитивнейшего запроса идет 10 секунд... это не нормально, фетч тоже тормознутый...
Филь глюк!
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

15 мар 2004, 17:33

miland, если ты делаешь бутерброд из ADO и ODBC, то быстро по определению быть не могёт.
Даже самый дурацкий замысел можно воплотить мастерски
GOS
Сообщения: 111
Зарегистрирован: 17 фев 2004, 10:32
Контактная информация:

18 мар 2004, 09:15

miland, если ты делаешь бутерброд из ADO и ODBC, то быстро по определению быть не могёт.
Полностью поддерживаю, ADO не подходит бля оперирования большими объёмами...
Сравнил с IB и c BDE, так скорость ADO просто безобразная!
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

18 мар 2004, 13:08

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

18 мар 2004, 13:11

miland, ты бы ради приличия сказал, о каком ODBC источнике идёт речь... Да, и заодно сразу на больших объёмах посмотри как память расходуется...
Даже самый дурацкий замысел можно воплотить мастерски
miland
Сообщения: 13
Зарегистрирован: 05 мар 2004, 10:30
Контактная информация:

19 мар 2004, 14:56

В том то вся и соль что хотелось бы чтоб работало с различными серверами. Экспериментировал с MS SQL. Но проблема явно не в сервере
Филь глюк!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

22 мар 2004, 19:24

А на самом сервере этот запрос быстро выполняется?
Может дело в запросе, может там выборка с сортировкой по выражению или еще чего-нибудь вроде того, а?
miland
Сообщения: 13
Зарегистрирован: 05 мар 2004, 10:30
Контактная информация:

22 мар 2004, 19:33

Запрос возвращающий 150 тыс. записей на сервере выполняется не больше секунды. Простой селект по одной таблице с выборкой по индексированому полю.
Филь глюк!
Ответить