Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Насколько увеличится быстродействие?


Автор: mspuz 5.12.2005, 13:12
У меня делается много SQL запросов, а на форме всего один IBQuery, для которого я формирую строку запроса и затем выполняю. Но программа работает довольно медленно и мне посоветовали для каждого запроса кинуть на форму компонент(IBQuery) в котором прописать строку запроса. Я считаю это глупостью, но..... А Вы как считаете - намного увеличится от этого скорость?????

Автор: Демо 5.12.2005, 15:16
Если просто кинуть кучу IBQuery, ещ ничего не изменится.
Создавай связку IBDataBase+IBQuery в от дельном потоке для каждого запроса.
Организуй для этого пул потоков, чтобы не было ситуации, когда будет сождано 500-1000 потоков с запросами.
Достаточно 5-10 штук.

Автор: Akella 5.12.2005, 16:07
Цитата(mspuz @ 5.12.2005, 13:12)
У меня делается много SQL запросов,

будет быстрее, если ты будешь использовать хранимые процедуры, и передавать в них параметры, вот тогда будет быстрее, если, конечно, сервак не слабый

Автор: mspuz 5.12.2005, 17:32
Спасибо, за ответы. А есть смысл создавать хранимые процедуры, если у меня используются обычные select'ы с довольно простыми условиями???

Автор: bas 5.12.2005, 17:51
Используй запросы с параметрами вместо динамических запросов.

Автор: mspuz 5.12.2005, 18:20
bas Использую!!!! Все равно не то. А тогда вопрос - если у меня делается выборка из 4000 записей, то может логичнее использовать LOCATE компонента IBTable??? Получится быстрее SELECT???

Автор: Bose 5.12.2005, 18:20
Цитата(mspuz @ 5.12.2005, 17:32)
если у меня используются обычные select'ы с довольно простыми условиями

хранимые процедуры хранятся на сервере уже в оптимизированном виде и за счёт этого выполняются быстрее.

Цитата(bas @ 5.12.2005, 17:51)
Используй запросы с параметрами вместо динамических запросов.

и как это увеличит скорость выполнения запросов?
smile smile smile

Автор: YurikGL 6.12.2005, 00:20
Цитата
и как это увеличит скорость выполнения запросов?


Увеличится... т.к. в случае динамического запроса сервер БД (если ничего не путаю, то именно он) каждый новый запрос обрабатывает и оптимизирует заново. Если использовать запрос с параметрами сервер заного его не оптимизирует и не обрабатывает а воспринимает как старый с другими параметрами... В общем, что-то в этом духе я читал в книге "Delphi глазами хакера".

Автор: Akella 6.12.2005, 15:34
Цитата(YurikGL @ 6.12.2005, 00:20)
Если использовать запрос с параметрами сервер заного его не оптимизирует и не обрабатывает а воспринимает как старый с другими параметрами...

какой именно сервер?
ведь у каждого SQL-сервера своя логика работы!

Автор: YurikGL 10.12.2005, 23:56
Цитата
какой именно сервер?
ведь у каждого SQL-сервера своя логика работы!


При работе с Interbase, насколько я знаю, использование запросов с параметрами дает выигрыш именно по этим причинам. Судя по использованию IBQuery у автора именно IB или его клон smile

Автор: FRAGNATIC 11.12.2005, 02:38
http://vingrad.ru/DELPHI-DLP-001987

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)