Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 6 ОтправитьПечать
Очень популярная тема (более 25 ответов) Оптимизация запроса для ТП (число прочтений - 11370 )
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Оптимизация запроса для ТП
Ответ #15 - 05. Марта 2008 :: 12:47
Печать  
DmitrO писал(а) 05. Марта 2008 :: 12:38:
Согласен с trad-ом, корелляционный подзапрос (в селект листе), это эффективнее чем отдельные запросы при выводе строки.


Тоже так считали, пока не провели эксперименты с табличным полем...
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса для ТП
Ответ #16 - 05. Марта 2008 :: 12:55
Печать  
sadovnikov писал(а) 05. Марта 2008 :: 12:36:
trad писал(а) 05. Марта 2008 :: 12:35:
у меня нет слов  Смех


А как-то поразвернутее? Для особо одаренных...

если честно, то мне лениво
впрочем и мой вопрос "почему?" тоже к ответу не обязывает
  

1&&2&&3
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Оптимизация запроса для ТП
Ответ #17 - 05. Марта 2008 :: 13:01
Печать  
trad писал(а) 05. Марта 2008 :: 12:55:
впрочем и мой вопрос "почему?" тоже к ответу не обязывает


Во мастер говорить непонятные фразы Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса для ТП
Ответ #18 - 05. Марта 2008 :: 13:13
Печать  
sadovnikov писал(а) 05. Марта 2008 :: 13:01:
trad писал(а) 05. Марта 2008 :: 12:55:
впрочем и мой вопрос "почему?" тоже к ответу не обязывает


Во мастер говорить непонятные фразы Улыбка

нуу, не суди строго Улыбка
вообще эта фраза была произнесена касательно поста #2
  

1&&2&&3
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Оптимизация запроса для ТП
Ответ #19 - 05. Марта 2008 :: 13:33
Печать  
trad писал(а) 05. Марта 2008 :: 13:13:
вообще эта фраза была произнесена касательно поста #2


Упс... Невнимательно читал веточку...
Несколько месяцев назад проводили эксперименты с табличным полем. На предмет скорости показа справочника товаров с рассчетными колонками. В эти колонки выводились всевозможные остатки.
Размер справочника - около 3 000 позиций. Групп - около 50.
Количество документов базе на тот момент было чуть больше миллиона.
При таких условиях справочник стал весьма заметно тормозить.

Пробовались следующие варианты:
1. Left Join с запросом по таблице итогов.
2. Вызов функции в селектлисте. Функция возвращает осаток по одному товару.
3. Вызов той же функции при отрисовки строки ТП.

Третий вариант показал увеличение скорости как минимум в 2-3 раза (сейчас уже не помню точных цифр).

Плюс, в 3-ем варианте имеется четкая возможность определять необходимость вызова функции в зависимости от видимости соответствующей колонки.
Я понимаю, что ТП преобразыет текст запроса, убирая невидимые колонки, но происходит (по крайней мере в то время происходило) это не всегда. Опять же, за сроком давности, не смогу вспомнить при каких условиях.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса для ТП
Ответ #20 - 05. Марта 2008 :: 14:10
Печать  
sadovnikov писал(а) 05. Марта 2008 :: 13:33:
Плюс, в 3-ем варианте имеется четкая возможность определять необходимость вызова функции в зависимости от видимости соответствующей колонки.
Я понимаю, что ТП преобразыет текст запроса, убирая невидимые колонки, но происходит (по крайней мере в то время происходило) это не всегда. Опять же, за сроком давности, не смогу вспомнить при каких условиях.

ТП с рождения умело убирать поля из запроса (и проблем с этим не было) если колонка невидима за исключением:
- поле входит в КП
- поле является ИД-полем
- явно не отрублено автоудаление поля
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса для ТП
Ответ #21 - 05. Марта 2008 :: 14:15
Печать  
sadovnikov писал(а) 05. Марта 2008 :: 13:33:
Третий вариант показал увеличение скорости как минимум в 2-3 раза (сейчас уже не помню точных цифр).
а физику этого ускорения можешь объяснить.
если конечно не лень Улыбка
  

1&&2&&3
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Оптимизация запроса для ТП
Ответ #22 - 05. Марта 2008 :: 14:15
Печать  
trad писал(а) 05. Марта 2008 :: 14:10:
ТП с рождения умело убирать поля из запроса (и проблем с этим не было) если колонка невидима за исключением:
- поле входит в КП
- поле является ИД-полем
- явно не отрублено автоудаление поля


В том-то и дело, что нарвались на ньюансы в убирании ненужных колонок. Леха завтра появится - попрошу вспомнить, в чем там было дело.
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Оптимизация запроса для ТП
Ответ #23 - 05. Марта 2008 :: 14:16
Печать  
trad писал(а) 05. Марта 2008 :: 14:15:
sadovnikov писал(а) 05. Марта 2008 :: 13:33:
Третий вариант показал увеличение скорости как минимум в 2-3 раза (сейчас уже не помню точных цифр).
а физику этого ускорения можешь объяснить.
если конечно не лень Улыбка


Неа... Не силен я в теории Печаль
За что постоянно принимаю подзатыльники от ADirks-а...  Смущённый
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Оптимизация запроса для ТП
Ответ #24 - 05. Марта 2008 :: 14:19
Печать  
МУЖИКИ!
я тута не пытаюсь выявить кто прав!
ВЫ просто посоветуйте как луче!
я прийму усе предложения.
Опробую и дам результат.
Потому как базы распределенные и серваки тож различаються!
будем отталкивать от самого хренового!.
как токо юзьверы скажут что ураган!
я вам сразуже отпишусь!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса для ТП
Ответ #25 - 05. Марта 2008 :: 14:22
Печать  
я кажется понял ваши проблемы Очень довольный
скажите, друзья-товарищи, у вас КП в индекс попадает?
если нет, тогда понятно ускорение в "третьем варианте"
еще раз перечитайте пост Берездетского
« Последняя редакция: 05. Марта 2008 :: 17:17 - trad »  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса для ТП
Ответ #26 - 05. Марта 2008 :: 14:26
Печать  
соотношение КП к индексу - основопологающее понятие поставщика ODBC для ТП
при несоблюдении его [соотношения] применение поставщика ODBC лишено смысла
  

1&&2&&3
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Оптимизация запроса для ТП
Ответ #27 - 05. Марта 2008 :: 14:28
Печать  
trad писал(а) 05. Марта 2008 :: 14:22:
я кажется понял ваши проблемы Очень довольный
скажите друзья-товарищи у вас КП в индекс попадает?
если нет, тогда понятно ускорение в "третий варианте"
еще раз прочитаете пост Берездетского


Увы, не попадает... Ибо пользователю хочется иметь возможность сортировки справочника по любому полю. И приходится делать:
Код
Выбрать все
///******************************** ADirks 08.08.2006
Процедура УстановитьСортировкуВПоставщикеДанных(фОбновлятьСтроки)
	Сам = Сам(Контекст);
	стрСортировка = ?((фЕстьГруппы=1) И (фИерархическийСписок=1), "IsFolder, ", "");
	Если ПустаяСтрока(КолонкаСортировки) = 0 Тогда
		стрНаправление = ?(НаправлениеСортировки < 0, " Desc", " Asc");
		стрСортировка = стрСортировка +
			СтрЗаменить(ВыражениеСортировки, ",", стрНаправление+",") +
			стрНаправление + ",";
		Сам.Колонки.Получить(КолонкаСортировки).ЗнакУпорядочивания = ?(НаправлениеСортировки<0, 2, 1);
	КонецЕсли;

	Сам.ПоставщикДанных = "";
	оПоставщикДанных.УстКлючПорядка(стрСортировка+" ROW_ID");
	Сам.ПоставщикДанных = оПоставщикДанных;

	Если фОбновлятьСтроки = 1 Тогда
		Сам.ОбновитьСтроки();
	КонецЕсли;
КонецПроцедуры
///******************************** ADirks 08.08.2006

 

  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Оптимизация запроса для ТП
Ответ #28 - 05. Марта 2008 :: 14:32
Печать  
Я конечно глубоко извиняюсь!
но вы ребята уже конечно глубокие материи полезли.
Огромное ВАМ ВСЕМ спасибо.
буду пробовать бо токо вернулси.
Как токо будут реальные результаты
сказуже оповещу в ветке!
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Оптимизация запроса для ТП
Ответ #29 - 05. Марта 2008 :: 14:35
Печать  
Увы, не попадает... Ибо пользователю хочется иметь возможность сортировки справочника по любому полю. И приходится делать:

Мне ненадо сортировать
в данной выборке значений будет максиму до 5-10
зачем засорачиваться?
Row_Id  в полне хватить!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 6
ОтправитьПечать