![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Медленно выполняется запрос... [D5, MSSQL]
Just_Dont_Know © (2002-10-28 18:21:00)Почему запрос выполняется медленно в моей программе в то время как он же через SQL Explorer выполняется раза в 4 быстрее???
Я конечно понимаю что он сложный - запрос идет к 5 таблицам со сложными вычислениями и с большим объемом данных, но почему SQL Explorer его выполняет намного быстрее...
Вроде я перед его выполнением делаю Prepare... для ускорения...
Использую параметрический запрос.
Кто может что посоветовать, подскажите пожалуйста...
sniknik (2002-10-28 18:54:00) [1]"внутренний оптимизатор" говориш...., сделай его сам примерная схема делаеш запрос с параметром TOP 100 например, отобразится мгновенно, а дальше в бакграунде запускай полный с асинхронным выполнением чтобы основной проге не мешать, подменить по завершении частичный датасет полным милисикундное дело а прокрутить 100 строк в гриде никакой юзер за пару секунд не сможет а если запрос больше выполняется пересмотри условие WHERE возможно оно у тебя слишком "мягкое".
Just_Dont_Know (2002-10-28 18:49:00) [2]Странные вещи происходят... скорость запроса стала такой же, что и в SQL Explorer... хотя я ровным счетом ничего не менял... и нагрузка на компьютер (он же сервер) не менялась...
Главное что сейчас все нормально! :)
Удачи всем!
Just_Dont_Know (2002-10-28 18:39:00) [3]
Нет Fetch all не происходит (я так думаю) так как при скролинге по гриду как и в SQL-Explorer у меня курсор периодически меняется на [crSQLWait] то есть сразу не все данные выбираются на клиента...
Я вот думаю, может в SQL-Explorer существует "внутренний оптимизатор" запросов, который оптимизирует мой запрос и выполняет его, а не сам мой запрос...
Кто-нибудь слышал об этом?
evgeg (2002-10-28 18:29:00) [4]Вариант: при выполнении в SQL Explorer-е не выбираются все данные на клиента, а при вызове из программы -- выбираются (FetchAll). Fetch all происходит, например, при вызове RecordCount (для BDE).