Переключение на Главную Страницу Страницы: [1] 2 3 ... 6 ОтправитьПечать
Очень популярная тема (более 25 ответов) Вопрос по ТП (число прочтений - 16184 )
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Вопрос по ТП
16. Сентября 2009 :: 12:39
Печать  
База MSSQL.
Отображаю в ТП журнал документов. Если период "год", то запрос отрабатывает быстро, как в обычном журнале, если 2-3 года, то при пролистовании заметны тормоза.
Как я понимаю сначала выполняется "полный" запрос (выбираются доки за 2-3 года), а потом от него отрезается некий период, который мы видим в ТП.

Вопрос - может есть какие-нить хитрости, чтоб избежать подобные тормоза?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Вопрос по ТП
Ответ #1 - 16. Сентября 2009 :: 12:52
Печать  
chessman писал(а) 16. Сентября 2009 :: 12:39:
Вопрос - может есть какие-нить хитрости, чтоб избежать подобные тормоза?

есть - нужно попадать в индекс
покажи КП (ключ порядка) и условия в тексте запроса если есть
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #2 - 16. Сентября 2009 :: 13:01
Печать  
Код
Выбрать все
	ТекстЗапроса = "
		|SELECT    
		|	tmp.date_time_iddoc	as Д_Т_ИдДок,
		|	tmp.iddoc 		as Док,
		|	tmp.Док_вид		as Док_вид,
		|	tmp.ДатаДок 		as ДатаДок,
		|	tmp.НомерДок	 	as НомерДок,
		|	tmp.НомерСделки	as НомерСделки,
		|	Акции.descr		as Акции,
		|	dbo._format(tmp.Приход)	as Приход,
		|	dbo._format(tmp.Расход)	as Расход,
		|	tmp.Приход			as Приход1,
		|	tmp.Расход			as Расход1,
		|	Биржи.code			as Биржа
		|FROM
		|	(SELECT
		|		Журн.date_time_iddoc,
		|		Журн.iddoc,
		|		Журн.iddocdef					  Док_вид,
		|		cast (Left(Журн.date_time_iddoc, 8) as datetime) ДатаДок,
		|		Журн.docno										 НомерДок,
		|		$ПриходАкций.НомерСделки 	НомерСделки,
		|		$ПриходАкций.Акции			Акции,
		|		$ПриходАкций.Сумма			Приход,
		|		0 					Расход,
		|		$ПриходАкций.Биржа			Биржа
		|	FROM
		|		$Документ.ПриходАкций ПриходАкций (NOLOCK)
		|	INNER JOIN
		|		_1SJourn Журн (NOLOCK INDEX=JOURNAL)
		|	On
		|		IDJOURNAL = " + This().МД.ИДОбъекта(Метаданные.Журнал("Акции")) + " and
		|		Журн.date_time_iddoc BETWEEN :НачДата AND :КонДата and
		|		iddocdef  = $ВидДокумента.ПриходАкций and
		|		Журн.iddoc = ПриходАкций.iddoc
		|	UNION ALL
		|	SELECT
		|		Журн.date_time_iddoc,
		|		Журн.iddoc,
		|		Журн.iddocdef	 			 Док_вид,
		|		cast (Left(Журн.date_time_iddoc, 8) as datetime) ДатаДок,
		|		Журн.docno										 НомерДок,
		|		$РасходАкций.НомерСделки,
		|		$РасходАкций.Акции		,
		|		0,
		|		$РасходАкций.Сумма,
		|		$РасходАкций.Биржа
		|	FROM
		|		$Документ.РасходАкций РасходАкций (NOLOCK)
		|	INNER JOIN
		|		_1SJourn Журн (NOLOCK INDEX=JOURNAL)
		|	On
		|		IDJOURNAL = " + This().МД.ИДОбъекта(Метаданные.Журнал("Акции")) + " and
		|		Журн.date_time_iddoc BETWEEN :НачДата AND :КонДата and
		|		iddocdef  = $ВидДокумента.РасходАкций and
		|		Журн.iddoc = РасходАкций.iddoc
		|	) tmp
		|LEFT JOIN
		|	$Справочник.Акции Акции
		|On
		|	tmp.Акции = Акции.id
		|LEFT JOIN
		|	$Справочник.Биржи Биржи
		|On
		|	tmp.Биржа = Биржи.id
		|WHERE  
		|	(1 = 1)
		|";
 




А КП устанавливаю, в зависимости от колонки сортировки

Код
Выбрать все
Источник.УстКлючПорядка(ТекКолонкаСортировки + " " + НаправлениеСортировки + ", Д_Т_ИдДок ASC"); 

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Вопрос по ТП
Ответ #3 - 16. Сентября 2009 :: 13:09
Печать  
Цитата:
А КП устанавливаю, в зависимости от колонки сортировки
такой подход к сортировке и такой запрос всегда будет тормозить.

Чудес не бывает.
Либо довольствуешся отборами и сортировками которые можно построить на существующих у _1sjourn индексах либо, на больших периодах, получаешь тормоза и бешенную нагрузку на сервер.
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #4 - 16. Сентября 2009 :: 13:11
Печать  
trad писал(а) 16. Сентября 2009 :: 13:09:
Цитата:
А КП устанавливаю, в зависимости от колонки сортировки
такой подход к сортировке и такой запрос всегда будет тормозить.

Чудес не бывает.
Либо довольствуешся отборами и сортировками которые можно построить на существующих у _1sjourn индексах либо, на больших периодах, получаешь тормоза и бешенную нагрузку на сервер.


Спасибо. Понял.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Вопрос по ТП
Ответ #5 - 16. Сентября 2009 :: 13:23
Печать  
Подумай, так ли уж нужно сортировать по любой колонке.
Может быть достаточно:

по позиции документа - индекс есть
по виду и позиции - индекс есть

по акции и позиции
по бирже и позиции
по номеруСделки и позиции - по этим трем можно сделать графы отбора и запрос перестраивать на _1scrdoc
правда акции и биржи будут упорядочены, но не по алфавиту
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #6 - 16. Сентября 2009 :: 13:29
Печать  
trad писал(а) 16. Сентября 2009 :: 13:23:
Подумай, так ли уж нужно сортировать по любой колонке.
Может быть достаточно:

по позиции документа - индекс есть
по виду и позиции - индекс есть

по акции и позиции
по бирже и позиции
по номеруСделки и позиции - по этим трем можно сделать графы отбора и запрос перестраивать на _1scrdoc


Для меня этот вопрос в большей степени "академический" - хотел просто понять, правильно ли все делаю.
Тормоза в данном случае не критичны, т.к. в секции "where" можно добавить отборы по любой колонке из ТП.
Но в любом случае спасибо за инфу.

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Вопрос по ТП
Ответ #7 - 16. Сентября 2009 :: 13:52
Печать  
(0) в Журнале(1с) есть еще другие виды документов ?


Вместо
1SJourn Журн (NOLOCK INDEX=JOURNAL)
я бы написал
1SJourn Журн (NOLOCK) пусть Sql сам определит по какому
индексу ему выбирать записи.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #8 - 16. Сентября 2009 :: 14:00
Печать  
Ну хозяин барин, я так пробовал, тормозил даже, если выбран период  "год", а с явным индексом стало без тормозов.

Опять же "тормоза" там не глобальные, просто заметен скроллинг.
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Вопрос по ТП
Ответ #9 - 16. Сентября 2009 :: 14:03
Печать  
trad писал(а) 16. Сентября 2009 :: 13:09:
Цитата:
А КП устанавливаю, в зависимости от колонки сортировки
такой подход к сортировке и такой запрос всегда будет тормозить.

Чудес не бывает.
Либо довольствуешся отборами и сортировками которые можно построить на существующих у _1sjourn индексах либо, на больших периодах, получаешь тормоза и бешенную нагрузку на сервер.


а добавить необходимые индексы?
http://www.softpoint.ru/article_id15.htm
  
Наверх
wwwICQ  
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #10 - 16. Сентября 2009 :: 14:06
Печать  
Да, вот я тоже об этом же подумал  Подмигивание
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Вопрос по ТП
Ответ #11 - 16. Сентября 2009 :: 14:08
Печать  
chessman писал(а) 16. Сентября 2009 :: 14:00:
Ну хозяин барин, я так пробовал, тормозил даже, если выбран период  "год", а с явным индексом стало без тормозов.

Опять же "тормоза" там не глобальные, просто заметен скроллинг.

может надо проверить статистику. Теоретически он (sql) сам должен
додуматься до оптимального индекса ( либо sql не успевает найти этот индекс и делает как-то по другому). Также наверное у тебя наверное малый процент этих документов к общему числу документов.

Входят ли еще какие либо документы в этот журнал Акций ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #12 - 16. Сентября 2009 :: 14:10
Печать  
Z1 писал(а) 16. Сентября 2009 :: 14:08:
chessman писал(а) 16. Сентября 2009 :: 14:00:
Ну хозяин барин, я так пробовал, тормозил даже, если выбран период  "год", а с явным индексом стало без тормозов.

Опять же "тормоза" там не глобальные, просто заметен скроллинг.

может надо проверить статистику. Теоретически он (sql) сам должен
додуматься до оптимального индекса ( либо sql не успевает найти этот индекс и делает как-то по другому). Также наверное у тебя наверное малый процент этих документов к общему числу документов.

Входят ли еще какие либо документы в этот журнал Акций ?


нет, только 2 вида доков
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Вопрос по ТП
Ответ #13 - 16. Сентября 2009 :: 14:11
Печать  
Anatol писал(а) 16. Сентября 2009 :: 14:03:
trad писал(а) 16. Сентября 2009 :: 13:09:
Цитата:
А КП устанавливаю, в зависимости от колонки сортировки
такой подход к сортировке и такой запрос всегда будет тормозить.

Чудес не бывает.
Либо довольствуешся отборами и сортировками которые можно построить на существующих у _1sjourn индексах либо, на больших периодах, получаешь тормоза и бешенную нагрузку на сервер.


а добавить необходимые индексы?
http://www.softpoint.ru/article_id15.htm

Добавить еще индексы это компромисс если их индексов много то это тоже плохо для insert,update,delete.
Т.е. добавлять свои индексы надо только для архиважных отборов,сортировок.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Вопрос по ТП
Ответ #14 - 16. Сентября 2009 :: 14:15
Печать  
Доков 2х видов 18509
Всего доков 78874
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 6
ОтправитьПечать