ADO в Delphi

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

Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

22 мар 2004, 19:42

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

22 мар 2004, 20:26

Запрос в Query Analyzere длится 1 секунду. По Ctrl+End моментом перехожу на последнюю строку. Запрос:
select ContactID from membership where groupID=<число>
Собственно, разница во времени выполнения и натолкнула на мысль о потере производительности в так сказать бутерброде из ADO и ODBC.
Филь глюк!
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

23 мар 2004, 16:37

miland, просто ради интереса: запусти тот же запрос на чистом OLE DB (?) драйвере для MS SQL Server'a...
Даже самый дурацкий замысел можно воплотить мастерски
Слава
Сообщения: 3
Зарегистрирован: 26 май 2004, 17:06
Контактная информация:

26 май 2004, 17:20

Лучшая производительность: ADO + MS SQL-сервер
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

31 май 2004, 18:39

Запрос в Query Analyzere длится 1 секунду. По Ctrl+End моментом перехожу на последнюю строку. Запрос:
select ContactID from membership where groupID=<число>
Ни за что не поверю, что 150тыс записей фетчатся мгновенно (даже если база локальная).
Виноват, Ctrl-End не показатель, так как более или менее умные приложения могут производить поиск последней записи используя или строя обратные индексы.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

01 июн 2004, 00:56

Naeel Maqsudov, всё очень просто - время выполнения запроса на сервере действительно очень маленькое. Время же выфетчивания резалтсета стандартными средствами не учитывается.
Т.е. для чистоты эксперимента нужно писать что то вроде этого:

declare @start datetime
select @start = date()
select * from...
select datediff('millisec', date(), @start)
Сорри за неточности, давненько шашек в руках не держал :)
Этот запрос нужно завернуть в хранимую процедуру и запустить таймер перед её запуском в Delphi и остановить после.
Разница между тем, что вернёт процедура в консоли и в программе на Delphi на одной и той же машине как раз и будет отображать степень тормознутости связки ADO+Delphi. Если тебе удается выфетчить в консколи 150К записей меньше чем за секунду, то в 3 секунды в дельфи ты всяко должен уложиться...
Но есть у меня большие подозрения, что всё это ты отливаешь в какой-нибудь грид и всё время расходуется на его перерисовку...
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

01 июн 2004, 07:38

Но есть у меня большие подозрения, что всё это ты отливаешь в какой-нибудь грид и всё время расходуется на его перерисовку...
Фетч не связан с перерисовкой, так как Table1.Last не по одной же записи щелкает до последней, а делает поиск переход на букмарк, причем все это заключено в Disable/EnableControls.
то в 3 секунды в дельфи ты всяко должен уложиться
Возможно. Надо пробовать.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

01 июн 2004, 12:56

Naeel Maqsudov, собственно в предыдущем сообщении я забыл переключится на miland'a :)
Даже самый дурацкий замысел можно воплотить мастерски
Paul
Сообщения: 1
Зарегистрирован: 21 июн 2004, 11:11

25 июн 2004, 10:41

Возникла та же проблема - с длительностью выборки, но уже с подключением dBase-базы.
Никто не справился случайно с задачей?
Заметил, что при выборке создается временной файл размером запрашиваемой бызы.
Где-то вычитал,что если установить свойство clUseServer "все будет пучком".
А если сама база на сервере, где будет создаваться tmp-файл?
Ответить