Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Вниз

Вопрос о 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
6-69966
rambo69
2002-02-08 20:32
2002.04.22
Снова сетевой трафик


1-69810
VictorT
2002-04-09 17:47
2002.04.22
Консольное приложение


4-70065
NiGth
2002-02-19 15:11
2002.04.22
WIN API


3-69670
vopros
2002-04-03 11:50
2002.04.22
Bde и xls и txt c разделителями tab


14-70021
KvORubin
2002-03-17 18:24
2002.04.22
RichEdit - как в нём отобразить непечатаемые символы (как в M.Office)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский