Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

Вопрос о TQuery с параметрами.   Найти похожие ветки 

 
Solod ©   (2002-03-13 07:31) [0]

Почему TQuery с параметрами выполняется на много медленнее
чем тот же запрос, но реализованный без параметров?


 
Корвин ©   (2002-03-13 08:33) [1]

Какая БД?


 
sniknik ©   (2002-03-13 08:33) [2]

Уверен?
запросы
Query1.SQL.Add("SELECT Sum(TotalRub) as TotRub FROM "Cheks.Dbf" WHERE SDate=:TekDate AND Operation IN (:I1, :I2)")
Query1.Parameters.ParamByName("TekDate").DataType:= ftDate;
....
и
Query1.SQL.Add("SELECT Sum(TotalRub) as TotRub FROM "Cheks.Dbf" WHERE SDate=03.12.2001 AND Operation IN (2, 7)")
равнозначны по времени выполнения (должны быть)

а вот запрос без условия
SELECT Sum(TotalRub) as TotRub FROM "Cheks.Dbf"
выполнится быстрее особенно если условие "WHERE" накладывается на неиндексированные поля.
а вообще положил бы куски кода для сравнения.


 
data ©   (2002-03-13 10:30) [3]

согласна со sniknik © (13.03.02 08:33)
Если условия в where одинаковые, то скорость должна быть одинаковой.
Кстати, для ускорения, можно сделать запросу Prepare, а потом только значения параметров менять.


 
Lord Warlock ©   (2002-03-14 15:39) [4]

dbf конечно работает быстро, тк используется только БДЕ
а попробуй то же в ACCESS или Sql SERVER, сразу разница
появится. data права, нужно предварительно компилировать
запросы, а в случае сервера БД сложные запросы вообще переложить на него в виде хранимых процедур, триггеров(чем их меньше, тем лучше и толще :), генераторов, смотря что он делает


 
djtsov ©   (2002-03-24 21:55) [5]

Solod верно говорит: я пробовал на MSSQL 2000 - запрос с параметрами выполняется раза в три дольше чем тот же запрос без параметров (Prepare не поможет - как мертвому припарка). Могу посоветовать писать запросы без параметров, напрямую в св-во TQuery.SQL.Text. Удачи..


 
Locky   (2002-03-30 10:39) [6]

По поводу MS SQL
Дело в том, что там есть оптимизатор запросов.
На каждый запрос строится план его выполнения. Есть такое понятие - статистика. она влияет на то, какие индексы будет использовать сервер и как именно он построит план.
В случае с явным указаниме ограничений оптимизатор может вычислить более точную селективность индекса (т.к. известно значение ограничения) и построить более оптимальный план.
В случае, если ограничение накладывается переменной, оптимизатор оперирует средней селективностью (т.к. неизвестно, какое значение примет та или иная переменная).
Однако, хранимые процедуры все же более выгодны по сравнению с динамическими запросами, потому что компиляция запроса и построение плана тоже занимают время. В некоторых случаях оптимизатор может полностью отказаться от оптимизации запроса и выполнять его "В лоб" (тогда, когда решит, что оптимизация запроса займет больше времени, чем просто тупо выбрать)



Страницы: 1 вся ветка

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
4-70069
ATLANTIDO
2002-02-14 18:01
2002.04.22
Верхнее окно


14-69976
False_Delirium
2002-03-12 10:07
2002.04.22
Microsoft не перестаёт удивлять..:)...


3-69745
IronHawk
2002-03-29 15:48
2002.04.22
Приветствую Мастеров ! Как удалять одинаковые строки в базе?


6-69948
Eraser
2002-02-07 13:08
2002.04.22
О коннекте по сокету


1-69814
cok
2002-04-06 19:16
2002.04.22
Антивирусы