:: Visual Foxpro, Foxpro for DOS
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Пашь, ну по чесноку, на фига план. Когда и так все ясно.
Нужно просто в параметр char(15) передать
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Аспид
Пашь, ну по чесноку, на фига план. Когда и так все ясно.
Нужно просто в параметр char(15) передать

1. ТС узнает как план из профайлера получить

2. Ты уверен, что в типе данных тормоза, а не в статистике, индексах.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
Спасибо. Стало понятнее. А как отобрать только свой запрос?



Исправлено 1 раз(а). Последнее : Burn, 12.11.19 13:05
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Burn
Спасибо. Стало понятнее. А как отобрать только свой запрос?

[attachment 32298 4.png]


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
PaulWist
ТС узнает как план из профайлера получить
Вынес много нового. Еще раз спасибо.
Файл приложил


------------------
В борьбе бобра с козлом побеждает бобро
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Я тут ошибся маленько с картинками, для плана надо так, правая педаль на ShowPlan xml

[attachment 32300 5.png]


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
Готово.
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
1. Определение индексов в студию.

2. Значений tn1 находится по индексу tn1 = 641 запись, а затем тратится 99% в запросе на поиск ОДНОЙ записи в индексе _dta_index_jornal_c_6_485576768__K2


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 12.11.19 15:30
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
tn1 - tn1
_dta_index_jornal_c_6_485576768__K2 - data

Но впринципе так и надо: период там большой - несколько лет, а операций мало



Исправлено 2 раз(а). Последнее : Burn, 12.11.19 16:26
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Burn
tn1 - tn1
_dta_index_jornal_c_6_485576768__K2 - data

Но впринципе так и надо: период там большой - несколько лет, а операций мало

1. По дате кластерный индекс?

2. Давай теперь план "плохого" запроса.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 12.11.19 20:45
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Burn
Burn
Попробую с declare @tn1 varchar(15)
Ага... А так подтормаживает
Может прямо в тексте запроса преобразовать тип (параметр обернуть кастом), ну раз уж фокс передаёт его как варчар... Кстати, совсем не уверен, но может помочь если параметром поставить не переменную, а поле фоксового курсора соответствующего типа C(15).


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Кстати, совсем не уверен
Греют душу (уши) такие слова, уверенность - задалбывает
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
PaulWist
По дате кластерный индекс?
Да. Но никто не признается, что его создал. Похоже он сгенерирован самим сервером

PaulWist
Давай теперь план "плохого" запроса.
Это был плохой.

Igor Korolyov
Может прямо в тексте запроса преобразовать тип (параметр обернуть кастом), ну раз уж фокс передаёт его как варчар... Кстати, совсем не уверен, но может помочь если параметром поставить не переменную, а поле фоксового курсора соответствующего типа C(15).
Тоже вариант;) В принципе обход я нашел. Теперь интересно разобраться: "Уже не в очках дело. Пусть скажут они есть или их нет" (С) ММЖ
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Burn
PaulWist
По дате кластерный индекс?
Да. Но никто не признается, что его создал. Похоже он сгенерирован самим сервером


Да, судя по наименованию - это IndexTuner сгенерил, НО этот индекс был создан под определенный запрос.

Оптимизатор выбрал план, сначала поиск по tn1 (нашел 640 записей), а затем сканируя найденные записи 640 раз обратился к кластерному индексу для поиска диапазона дат, что бы получить одну запись. (это может говорить о том, что кластерный индекс имеет большую селективность)

Burn
PaulWist
Давай теперь план "плохого" запроса.
Это был плохой.


Ну тогда план "хорошего" давай.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
PaulWist
Давай теперь план "плохого" запроса.
Готово
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
Igor Korolyov
но может помочь если параметром поставить не переменную, а поле фоксового курсора соответствующего типа C(15).
Лучше не стало.
Igor Korolyov
Может прямо в тексте запроса преобразовать тип (параметр обернуть кастом), ну раз уж фокс передаёт его как варчар...
Это работает
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Burn
Это работает
Значит и это будет
TEXT TO lcSql NOSHOW TEXTMERGE
declare @dat_dog datetime = ?m.dat_dog,
@kdate datetime = ?kdate ,
@tn1 char(15) = ?m.tn1
SELECT Sum(summa) AS summa,Sum(summa_val) AS summa_val FROM jornal WHERE data>=@dat_dog AND data<=@kdate AND tn1=@tn1
ENDTEXT
lnSQL=SQLExec(ThisForm.ConnHandle,lcSQL,[jornal1])

Я сложные запросы, отлаживаю в студии.
И переношу прямо в неизменном виде, просто все переменные сразу инициализирую.

Легче текст таскать студия-фокс-студия.
Ну и планы можно конечно изучить... коли есть желание)))
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Планы одинаковые!

Разница во времени компиляции планов:

1. с 2-мя праметрами, CompileTime="65"

2 с 3-мя параметрами, CompileTime="463"

в 7 раз дольше.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
Burn
Автор

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
PaulWist
Планы одинаковые!
Вот и я этому удивился

А бороться с кластерностью индекса стоит?

Аспид
Значит и это будет
Дык я и не сомневался

Аспид
Я сложные запросы, отлаживаю в студии.
Я тоже

Аспид
И переношу прямо в неизменном виде, просто все переменные сразу инициализирую.
Срасибо. Интересный способ.
Ratings: 0 negative/0 positive
Re: Тормозит запрос MS SQL ели значение поля передаеться параметром
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Burn
PaulWist
Планы одинаковые!
Вот и я этому удивился

А бороться с кластерностью индекса стоит?


1. Про время компиляции уже написал, те ad-hoc запросы жрут ресурсы не всегда оставляя планов в кэше, поэтому лучше использовать ХП.

2. НЕТ, кластерный индекс содержит ВСЕ данные, что бы избежать просмотра закладок - это его особенность, для кластерного индекса надо стремиться, что бы он был похож на первичный ключ, те что бы селективность была маленькой, те чем больше уникальных значений в кластерном индексе, тем лучше.

В твоём случае попробу сделать такой индекс

create index idx (tn1, data) include(summa,summa_val,bs_k,bs_d) on dbo.jornal


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 3 раз(а). Последнее : PaulWist, 13.11.19 15:46
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 17 vlgrech  (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика