AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.10.2013, 12:17   #1  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
тормозят селекты по вьюхам
Всем привет.

может кто сталкивался: простые запросы к вьюхам адски тормозят.

Код:
select 
top 251 "phonecall0".Subject as "subject"
, "phonecall0".StateCode as "statecode"
, "phonecall0".PriorityCode as "prioritycode"
, "phonecall0".ScheduledEnd as "scheduledend"
, "phonecall0".CreatedBy as "createdby"
, "phonecall0".RegardingObjectId as "regardingobjectid"
, "phonecall0".ActivityId as "activityid"
, "phonecall0".CreatedOn as "createdon"
, "phonecall0".ModifiedOn as "modifiedon"
, "phonecall0".New_sringtime as "new_sringtime"
, "phonecall0".OwnerId as "ownerid"
, "phonecall0".New_durationsecs as "new_durationsecs"
, "phonecall0".OverriddenCreatedOn as "overriddencreatedon"
, "phonecall0".CreatedByName as "createdbyname"
, "phonecall0".CreatedByYomiName as "createdbyyominame"
, "phonecall0".RegardingObjectTypeCode as "regardingobjecttypecode"
, "phonecall0".RegardingObjectIdName as "regardingobjectidname"
, "phonecall0".RegardingObjectIdYomiName as "regardingobjectidyominame"
, "phonecall0".OwnerIdType as "owneridtype"
, "phonecall0".OwnerIdName as "owneridname"
, "phonecall0".OwnerIdYomiName as "owneridyominame" 
from
 PhoneCall as "phonecall0" (NOLOCK)  
 join SystemUser as "aa" (NOLOCK)  on ("phonecall0".OwningUser  =  "aa".SystemUserId and 
		(("aa".BusinessUnitId = '571EA980-8733-E011-B92E-001A6433B300'))) 
 join SystemUser as "ad" (NOLOCK)  on ("phonecall0".CreatedBy  =  "ad".SystemUserId and 
		(("ad".BusinessUnitId = '7520170E-0D94-DF11-9328-001A6433B300'))) 
where
 (( "phonecall0".CreatedOn >= '2013-06-30 20:00:00'  and  "phonecall0".CreatedOn < '2013-08-31 20:00:00' )) 
 
 order by "phonecall0".Subject asc
8 минут...

если сделать вьюху phonecall1 с изменением всего 1 поля:

Код:
CASE WHEN XXowner.OwnerIdType = 8 THEN XXowner.OwnerId ELSE NULL END AS OwningUser,
поменять на

Код:
XXowner.OwnerId AS OwningUser,
отрабатывает мгновенно.

CRM 2011 + RU 14

есть идеи, что можно сделать?
Старый 01.10.2013, 12:56   #2  
kh_heckfy is offline
kh_heckfy
Участник
 
139 / 14 (1) ++
Регистрация: 30.03.2012
Адрес: Новосибирск
тоже есть такие проблемные запросы.... и у юзеров отваливается все по таймауту
Старый 01.10.2013, 13:01   #3  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Сколько у Вас звонков, пользователей?

Индексы есть на полях CreatedOn, Subject, OwningUser, SystemUserId, CreatedBy?

Когда последний раз делался реиндекс базы.
__________________
Мой блог https://procrm.tv
Старый 01.10.2013, 14:05   #4  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
4.5млн звонков, пользователей в районе 500-700

индексы - в каких таблицах? реиндексируется вся база каждую ночь.
Старый 01.10.2013, 14:34   #5  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
У меня базы CRM под рукой нет.

Но те поля, что у Вас в where и в join надо индексировать.
PhoneCall.CreatedOn
PhoneCall.Subject
phonecall.OwningUser
phonecall.CreatedBy

Посмотрите план выполнения запроса. Где он начинает тратить много времени и добавьте индекс.
__________________
Мой блог https://procrm.tv
Старый 01.10.2013, 18:09   #6  
_ч_ is offline
_ч_
Участник
 
1 / 10 (1) +
Регистрация: 01.10.2013
Eugene.Ostroukhov,
если в запросе поставить OPTION (RECOMPILE), ситуация поменяется в какую-нибудь сторону?
Старый 02.10.2013, 10:50   #7  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
Цитата:
Сообщение от _ч_ Посмотреть сообщение
Eugene.Ostroukhov,
если в запросе поставить OPTION (RECOMPILE), ситуация поменяется в какую-нибудь сторону?
неа
Старый 02.10.2013, 17:46   #8  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
вот еще что кажется странным, если у кого то есть возможность проверить и сказать тут - так же это у него или нет:

первый селект (в первом посте) - снят Sql Profiler-ом.
как выяснили - тормозит колонка OwningUser, которая во вьюхе вычисляется как case

при этом:
если добавить в этот селект условие OwnerIdType = 8 ( у нас только пользователи) - селекты начинают так же быстро работать, как и изменение case-а во вьюхе на просто OwnerId

может кто-то проверить у себя, какие селекты отправляются в SQL при выполнении каикх-то сохраненных представлений (UserQuery) ?
Старый 22.10.2013, 16:25   #9  
Eugene.Ostroukhov is offline
Eugene.Ostroukhov
Участник
 
149 / 11 (1) +
Регистрация: 22.02.2013
ап
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:05.