Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Оптимизация запроса (число прочтений - 4305 )
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Оптимизация запроса
16. Августа 2007 :: 13:15
Печать  
Больше не знаю что делать (((

Код
Выбрать все
SELECT    
	Журн.$ОбщийРеквизит.Автор as Автор,
	$РН.Клиент as Клиент,
	Менедж.ID as Менеджер,
	Менедж.ParentID as Отдел,
	SUM($ПТ.НДС) as НДС,
	SUM($ПТ.Стоимость) as Стоимость,
	SUM($ПТ.Оборот) as Оборот,
	$ПТ.КодОперации as КодОперации
FROM
	$Документ.РасходнаяНакладная as РН
INNER JOIN
	1SJourn as Журн On Журн.IDDoc = РН.IDDoc
			AND Журн.Date BETWEEN {d :ДатаНач} AND {d :ДатаКон}
			AND Журн.$ОбщийРеквизит.Автор IN "+Условия+"    
INNER JOIN
	$Регистр.ПартииТоваров as ПТ On РН.IDDoc = ПТ.IDDoc
			AND $ПТ.Фирма = :ПустаяФирма
INNER JOIN
	$Справочник.Контрагенты as Клиенты On Клиенты.ID = $РН.Клиент
INNER JOIN
	$Справочник.Пользователи as Менедж On Менедж.ID = $Клиенты.Менеджер
GROUP BY Автор,Клиент,Менеджер,Отдел,КодОперации 



Такой запрос выполняется дольше, чем аналогичный

Код
Выбрать все
Период с ВыбНачПериода по ВыбКонПериода;
Фирма=Регистр.ПартииТоваров.Фирма;
Стоимость=Регистр.ПартииТоваров.Стоимость;
НДС=Регистр.ПартииТоваров.НДС;
Автор=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Автор;
Клиент=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Клиент;
р;
Оборот=Регистр.ПартииТоваров.Оборот;
КодОперации=Регистр.ПартииТоваров.КодОперации;
Группировка Автор;
Условие (Фирма=глПустаяФирма);
Условие (Автор в СпВыбСотр); 


Может кто даст реальные советы по реальной оптимизации??
Если 1с как-то быстрее его выполняет, значит он его выполняет по другой какой-то логике. Вот..
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Оптимизация запроса
Ответ #1 - 18. Августа 2007 :: 21:28
Печать  
Эти два запроса различны
Иннер джоин можно заменить на Лефт джоин
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Оптимизация запроса
Ответ #2 - 20. Августа 2007 :: 01:02
Печать  
Rubin писал(а) 16. Августа 2007 :: 13:15:
Больше не знаю что делать (((
Такой запрос выполняется дольше, чем аналогичный


По моему группировке в обычном запросе соответсвует group by в прямом запросе. В обычном группировка по одному полю, а в прямом по ПЯТИ (!). а это большая разница в скорости. Получается что сраниваешь разные запросы.
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Оптимизация запроса
Ответ #3 - 20. Августа 2007 :: 05:07
Печать  
Цитата:
Эти два запроса различны
Иннер джоин можно заменить на Лефт джоин

LEFT JOIN Ускорит, не на много....
  
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Оптимизация запроса
Ответ #4 - 20. Августа 2007 :: 05:32
Печать  
ev-kov писал(а) 20. Августа 2007 :: 01:02:
По моему группировке в обычном запросе соответсвует group by в прямом запросе. В обычном группировка по одному полю, а в прямом по ПЯТИ (!). а это большая разница в скорости. Получается что сраниваешь разные запросы.



Такое в принципе побыстрее работает:

Код
Выбрать все
SELECT
	tmp.Автор as Автор,
	tmp.Клиент as Клиент,
	Менедж.ID as Менеджер,
	Менедж.ParentID as Отдел,
	tmp.НДС,
	tmp.Стоимость,
	tmp.Оборот
FROM (
	SELECT
		Журн.$ОбщийРеквизит.Автор as Автор,
		$РН.Клиент as Клиент,
		SUM($ПТ.НДС) as НДС,
		SUM($ПТ.Стоимость) as Стоимость,
		SUM($ПТ.Оборот) as Оборот
	FROM
		$Документ.РасходнаяНакладная as РН
	INNER JOIN
		1SJourn as Журн On Журн.IDDoc = РН.IDDoc
				AND Журн.Date BETWEEN {d :ДатаНач} AND {d :ДатаКон}
				AND Журн.$ОбщийРеквизит.Автор IN "+Условия+"
	INNER JOIN
		$Регистр.ПартииТоваров as ПТ On РН.IDDoc = ПТ.IDDoc
			AND $ПТ.Фирма = :ПустаяФирма
	GROUP BY Клиент,Автор
	) as tmp
INNER JOIN
	$Справочник.Контрагенты as Клиенты On Клиенты.ID = tmp.Клиент
INNER JOIN
	$Справочник.Пользователи as Менедж On Менедж.ID = $Клиенты.Менеджер 

  
Наверх
 
IP записан
 
MichaelM
YaBB Newbies
*
Отсутствует



Сообщений: 10
Зарегистрирован: 20. Августа 2007
Пол: Мужской
Re: Оптимизация запроса
Ответ #5 - 20. Августа 2007 :: 05:39
Печать  
Гопода. непойму 1с++ умеет сам nolock  в свойствах ODBC ставить
Что-то не замечал .
  
Наверх
 
IP записан
 
MichaelM
YaBB Newbies
*
Отсутствует



Сообщений: 10
Зарегистрирован: 20. Августа 2007
Пол: Мужской
Re: Оптимизация запроса
Ответ #6 - 20. Августа 2007 :: 05:40
Печать  
Читать "Господа"
а то не то гопота не то господа .
извиняюсь.

но не пойму почему никто nolock  не подсказывает
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Оптимизация запроса
Ответ #7 - 20. Августа 2007 :: 06:41
Печать  
MichaelM писал(а) 20. Августа 2007 :: 05:40:
но не пойму почему никто nolock  не подсказывает
патамушта, DBF
  

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


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Оптимизация запроса
Ответ #8 - 20. Августа 2007 :: 07:38
Печать  
В приклепленой теме http://www.1cpp.ru/forum/YaBB.pl?num=1184317705
kirusha очень интересно описал методы оптимизации по индексам в DBF
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Оптимизация запроса
Ответ #9 - 20. Августа 2007 :: 12:00
Печать  
lustin писал(а) 20. Августа 2007 :: 07:38:
В приклепленой теме http://www.1cpp.ru/forum/YaBB.pl?num=1184317705
kirusha очень интересно описал методы оптимизации по индексам в DBF


неплохая весчь!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать