Переключение на Главную Страницу Страницы: 1 2 3 [4]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Учусь писать запросы...ошибки ...помогите разобрат (число прочтений - 13897 )
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #45 - 28. Ноября 2007 :: 10:03
Печать  
Neo писал(а) 28. Ноября 2007 :: 09:05:
> Приведи пример прямого запроса , если в табличной части у тебя 3 позиции

Текст="
           |SELECT
           |Рег.Товар as [Товар $Справочник.Товары],
           |Sum(Рег.ОстатокТовараОстаток) as Количество
           |FROM
           |$РегистрОстатки.ОстаткиТоваров(:ДатаДок~,,Товар IN (SELECT Val FROM #ГруппаТов) AND Склад=:ВыбСклад,(Товар),(ОстатокТовара)) as Рег
           |GROUP BY
           |Рег.Товар                                                    
           |";



группировка в верхнем запросе не нужна
можно вписать set nocount on перед селектом - должно быть быстрее
в УложитьСписокОбъектов можно не указывать ВидЭлементов.
  
Наверх
 
IP записан
 
AHgpuXa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 08. Июня 2007
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #46 - 28. Ноября 2007 :: 10:14
Печать  
Цитата:
>  еще . А если в табличной части у тебя будет 100 позиций , то будет 100 запросов ? 

- Хороший вопрос... В принципе да. Просто вспомнил, как в каком доке я делал заполение не одним запросом по группе товаров, а перебором товаров и отдельным запросом для каждого товара - работало быстрее!

Это очень странно и маловероятно. Прежде чем выполнить инструкцию, SQL server подготавливает запрос запрос, а затем его выполняет. Даже если использовать подготовленный параметризированиый(у Вас он не ни разу подготовленный, насколько я вижу) запрос (или даже хранимую процедуру) 100 раз, не получим выигрыша в скорости, в отличии от одного запроса, так как значительный выигрыш будет достигаться только в том случае, если сам запрос максимально отрабатывает непосредственно на SQL-сервере.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #47 - 28. Ноября 2007 :: 10:16
Печать  
Если убрать группировку, выдает общий остаток по всем строкам.

Но даже в этом случае скорости не прибавилось. Запрос по списку даже визуально работает с некоторой задержкой.

Когда по строкам отдельно запускал, все пролетало быстро и разницу в скорости определил только по замерам в конфигураторе...
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #48 - 28. Ноября 2007 :: 10:22
Печать  
> Это очень странно и маловероятно. Прежде чем выполнить инструкцию, SQL server подготавливает запрос запрос, а затем его выполняет.

- Тем не менее было такое. Только там 1С-й запрос был. Нужно было сделать сложный отбор при заполнении дока: и по группам, и остаки вывести из разных регистров ... что то такое.. Когла все это объединил в одном большом запросе, все как-то долго думало... Потом сделал как несколько малельких запросов (для каждого товара, выбранного из справочника стандартными методами 1 С) , пошло быстрее
  
Наверх
 
IP записан
 
AHgpuXa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 08. Июня 2007
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #49 - 28. Ноября 2007 :: 11:00
Печать  
Цитата:
Только там 1С-й запрос был.
ну и к чему тогда этот "винигрет". Опеределитесь. 1С запрос и SQL запрос - две большие разницы.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #50 - 28. Ноября 2007 :: 11:08
Печать  
Так я просто для примера привел.
Суть в том, что и там были случаи, когда по отдельности быстрее работало.
И прямой запрос по списку почему-то медленее идет, чем если по отдельности... Не знаю, как на больших списках, но при 3 позициях в доке по отдельности быстрее считает...
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #51 - 29. Ноября 2007 :: 06:42
Печать  
Цитата:
Суть в том, что и там были случаи, когда по отдельности быстрее работало.

А что ты знаешь об оптимизации? Смотрел план выполнения запроса?
Просто когда у тебя максимально детализированный запрос - то сервер может точно выбрать максимально подходящий индекс и сделать по нему выборку. Когда расширяешь область запроса, то об оптимизации должен уже думать ты.
З.Ы. Я сам допускал одну и ту же ошибку - указывал только одну границу диапазона дат, типа (Дата>Какая-то дата). И удивлялся долгой работе запроса. Для ускорения разбил запрос по датам и выбирал целенаправленно (Дата=Дата1), затем (Дата=Дата2) и т.д. работало существенно быстрее. А затем мне не объяснили, что в таком условии: (Дата>Какая-то дата) Сервер не использует индекс, тогда как для четкого сравнения используется именно индекс. Переписал условие (Дата>Какая-то дата) and (Дата<=ТекущаяДата()) и запрос стал просто летать.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 
ОтправитьПечать