esteghamat
یک شنبه 16 آذر 1393, 15:41 عصر
با سلام
ابتدا Query هايي را كه در سيستم زمان اجراي آنها بيش از 3 ثانيه بود را بدست آورديم. (مثلا كوئري مربوط به كارتابل)
سپس به بررسي execution plan آن پرداختيم.
روي يك اپراتور با هزينه بالا Zoom كرديم. مثلا 17 درصد و يك Index Scan بود.
حال چطور بايد تشخيص داد كه اين اپراتور مروبط به كدام بخش از كد مي شود؟
در ضمن ظاهر كد از يك View مي خواند اما همان view به 10 عدد View ديگر در سطح دوم و هر كدام از اينها به 2 يا 3 عدد View ديگر ختم مي شوند .
لطفا راهنمايي فرماييد.
حمیدرضاصادقیان
یک شنبه 16 آذر 1393, 18:38 عصر
سلام
روی خود همان Index Scan ماوس را نگه دارید اطلاعات کامل از اسم ایندکس را دراختیار شما قرار میدهد.
با بررسی ایندکس و نام جدول میتوانید به مقصد برسید.
esteghamat
دوشنبه 17 آذر 1393, 16:47 عصر
ضمن تشكر از راهنمايي شما
يك سو.ال : يكي از اپراتورها در يك query بزرك و پيچيده 49 درصد Cost دارد.
نوع اپراتور هم خوب است : Index seek
در ضمن اين اپراتور يكي از برگ هاي درختواره Execution Plan است. يعني نودي قبل از آن وجود ندارد.
در Query ما يك Join با اين جدول برقرار مي كنيم. (و تنها شرطمان هم از طريق همان Join اعمال مي شود و مستقيم روي اين جدول Where نداريم.)
آيا اين cost در يك Query براي يك اپراتور آن هم از نوع Seek زياد نيست. لطفا راهنمايي كنيد. (TBLrefersender)
SELECT Gnr.TBLReferSender.ReferReceiverRef, Gnr.TBLReferSender.ReferSenderId, Gnr.VwReferReceiver.ReferReceiverId,
Gnr.TBLReferSender.CorrespondenceSideID AS FromCorrespondenceSideID, Gnr.TBLReferSender.CorrespondenceSideTitle AS FromCorrespondenceSideTitle,
Gnr.TBLReferSender.PersonnelPositionId AS FromPersonnelPositionId, Gnr.TBLReferSender.FullNameWithPostition AS FromFullNameWithPostition,
Gnr.VwReferReceiver.FromWorkListFolderRef AS FromWorkListFolderId, Gnr.VwReferReceiver.FromWorkListFolderTypeRef, Gnr.VwReferReceiver.FromFolderTitle,
Gnr.TBLReferSender.LetterReferPriorityID, Gnr.TBLReferSender.PriorityTitle,
Gnr.TBLReferSender.IsOriginal AS FromIsOriginal, Gnr.TBLReferSender.ReferSubject, Gnr.TBLReferSender.ReferSendDate, Gnr.TBLReferSender.AccessibleDate,
Gnr.VwReferReceiver.CorrespondenceSideID AS ToCorrespondenceSideID, Gnr.VwReferReceiver.CorrespondenceSideTitle AS ToCorrespondenceSideTitle,
Gnr.VwReferReceiver.PersonnelPositionId AS ToPersonnelPositionId, Gnr.VwReferReceiver.FullNameWithPosition AS ToFullNameWithPostition,
Gnr.VwReferReceiver.ReferTypeID, Gnr.VwReferReceiver.ReferTypeTitle, Gnr.VwReferReceiver.LetterReferToTypeID, Gnr.VwReferReceiver.LetterReferToTypeTitle,
Gnr.VwReferReceiver.ToWorkListFolderRef AS ToWorkListFolderId, Gnr.VwReferReceiver.ToWorkListFolderTypeRef, Gnr.VwReferReceiver.ToFolderTitle,
Gnr.VwReferReceiver.IsOriginal AS ToIsOriginal, Gnr.TBLReferSender.EntityTypeId,
Gnr.TBLReferSender.EntityTitle, Gnr.TBLReferSender.EntityRef,
Gnr.VwReferReceiver.OriginalReferReceiverId, Gnr.TBLReferSender.OriginalReferSenderId,
Gnr.VwReferReceiverFirstStatus.ReferStatusDate AS ReferFirstStatusDate, isnull(Gnr.VwReferReceiverLatestStatus.ReferStatus Ref,0) as ReferStatusRef,
Gnr.VwReferReceiverLatestStatus.ReferStatusDate, Gnr.VwReferReceiverLatestStatus.LastStatusTitle, CAST(1 AS bit) AS HasAttachement,
Gnr.VwReferReceiver.ToFlag, Gnr.VwReferReceiver.FromFlag, Gnr.VwReferReceiver.IsReadSender, Gnr.VwReferReceiver.IsReadReceiver, 1 AS HasUnreadDescusion,
Gnr.TBLReferSender.SenderCreatorUser
FROM
Gnr.VwReferReceiver INNER JOIN
Gnr.TBLReferSender ON Gnr.VwReferReceiver.ReferSenderRef = Gnr.TBLReferSender.ReferSenderId
LEFT OUTER JOIN
Gnr.VwReferReceiverFirstStatus ON Gnr.VwReferReceiver.ReferReceiverId = Gnr.VwReferReceiverFirstStatus.ReferReceiverRef
LEFT OUTER JOIN
Gnr.VwReferReceiverLatestStatus ON Gnr.VwReferReceiver.ReferReceiverId = Gnr.VwReferReceiverLatestStatus.ReferReceiverRef
Where Gnr.vwReferReceiver.FromWorkListFolderRef = 1000991 OR Gnr.vwReferReceiver.TOWorkListFolderRef = 1000991
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.