Главная страница


su.dbms.sql

 
 - SU.DBMS.SQL ------------------------------------------------------------------
 From : Tolik Tentser                        2:5020/400     03 Apr 2001  14:35:07
 To : All
 Subject : Re: Дремина хитрость 2
 -------------------------------------------------------------------------------- 
 
 Hi !
 
 > >Аксиома - JOIN с дополнительным справочником любого объема по его
 > >(справочника) первичному ключу, особливо, если он CLUSTERED - для MSSQL -
 > >практически никак не влияет на время исполнения запроса.
 >
 > Приведи пример твоего SELECTа на миллион записей который, плиз.
 
 Hу, допустим:
 
   SELECT T.*,
     - DATEDIFF(day, CASE WHEN @StartDate > T.MustPayDate THEN @StartDate
           ELSE T.MustPayDate
      END,
      CASE WHEN @StartDate > T.PayDate THEN @StartDate
           ELSE T.PayDate
      END) * T.Amount * @PayPercent * T.[Index] / 100 AS Income
   FROM (
   SELECT H.ObjectId AS Id,
          H.ItemDate AS PayDate,
          H2.ItemDate AS DocDate,
          M.Amount,
          D.DocNum,
          OT.ItemName AS DocType,
          H1.Itemdate AS MustPayDate,
          OC.Itemname AS Contractor,
          OM.ItemName AS Manager,
          D2.DocNum AS PayDocNum,
          OT2.ItemName AS PayDocType,
          CASE WHEN @ForManager IS NULL THEN PInd.value ELSE 2 - 2 *
 PInd.value END AS [Index]
     FROM History H
       INNER JOIN Links L ON L.ChildId = H.ObjectId AND L.TypeId =
 @Contractor
       INNER JOIN Links LM ON LM.ChildId = L.ParentId AND LM.TypeId =
 @Manager AND ISNULL(@ManagerId, LM.parentId) = LM.parentId
       INNER JOIN Movement M WITH(INDEX(IN_Movement_GroupIdContentId)) ON
 M.GroupId = H.ObjectId AND M.ContentId = @Roubles
       INNER JOIN Objects O1 ON O1.Id = M.ContainerId AND O1.TypeId IN
 (@InvoiceOut, @InvoiceTr)
       INNER JOIN History H2 ON H2.ObjectId = M.ContainerId AND H2.ItemDate <
 @EndDate + 1
       INNER JOIN Status S2 ON S2.Id = H2.StatusId AND S2.Code = 'DATE'
       INNER LOOP JOIN Objects O2 ON O2.Id = H.ObjectId
       INNER LOOP JOIN Doc D2 ON D2.Id = O2.Id
       INNER LOOP JOIN ObjType OT2 ON OT2.Id = O2.TypeId
       INNER LOOP JOIN Doc D ON D.Id = O1.Id
       INNER LOOP JOIN ObjType OT ON OT.Id = O1.TypeId
       INNER JOIN History H1 ON H1.ObjectId = M.ContainerId
       INNER JOIN Status S ON S.Id = H1.StatusId AND S.Code = 'PAYDATE'
       INNER JOIN Objects OM ON OM.Id = LM.parentId
       INNER JOIN Objects OC ON OC.Id = L.parentId
       LEFT LOOP JOIN Properties PInd ON PInd.ObjectId = OC.Id AND
 PInd.TypeId = @Index
       INNER JOIN Objects O ON O.Id = H.ObjectId
    WHERE H.StatusId IN (@CODate, @DIDate) AND H.Itemdate >= @StartDate AND
 H.ItemDate < @EndDate + 1
      AND (H.StatusId = @CODate OR EXISTS(SELECT TOP 1 * FROM MoveLink ML
                                            INNER JOIN History HL ON
 HL.ObjectId = ML.ObjectId
                                            INNER JOIN Status SL ON SL.Id =
 HL.StatusId AND SL.GroupId = @AccType AND SL.Code IN ('BANK', 'VEXELMANY')
                                           WHERE ML.MoveId = M.Id AND
 ML.TypeId = @Account))
      AND NOT EXISTS (SELECT TOP 1 * FROM History WHERE ObjectId = H.ObjectId
 AND StatusId = @Tender)
   UNION --ALL
   SELECT M.GroupId,
          H2.ItemDate,
          H.Itemdate,
          M.Amount,
          D.DocNum,
          OT.ItemName,
          H1.Itemdate,
          OC.Itemname,
          OM.ItemName,
          D2.DocNum AS PayDocNum,
          OT2.ItemName AS PayDocType,
          CASE WHEN @ForManager IS NULL THEN PInd.value ELSE 2 - 2 *
 PInd.value END AS [Index]
     FROM History H
       INNER JOIN Movement M WITH(INDEX(IN_Movement_ContainerId)) ON
 M.ContainerId = H.ObjectId AND M.ContentId = @Roubles
       INNER LOOP JOIN Objects O1 ON O1.Id = M.GroupId AND O1.TypeId IN
 (@CashOrder, @DraftIn)
       INNER JOIN Links L ON L.ChildId = M.GroupId AND L.TypeId = @Contractor
       INNER JOIN Links LM ON LM.ChildId = L.ParentId AND LM.TypeId =
 @Manager AND ISNULL(@ManagerId, LM.parentId) = LM.parentId
       INNER LOOP JOIN Doc D ON D.Id = H.ObjectId
       INNER LOOP JOIN Objects O ON O.Id = H.ObjectId
       INNER LOOP JOIN ObjType OT ON OT.Id = O.TypeId
       INNER JOIN History H2 ON H2.ObjectId = M.GroupId AND H2.ItemDate <
 @EndDate + 1
       INNER LOOP JOIN Objects O2 ON O2.Id = M.GroupId
       INNER LOOP JOIN Doc D2 ON D2.Id = O2.Id
       INNER LOOP JOIN ObjType OT2 ON OT2.Id = O2.TypeId
       INNER JOIN Status S2 ON S2.Id = H2.StatusId AND S2.Code = 'DATE'
       INNER JOIN History H1 ON H1.ObjectId = M.ContainerId
       INNER JOIN Status S ON S.Id = H1.StatusId AND S.Code = 'PAYDATE'
       INNER LOOP JOIN Objects OM ON OM.Id = LM.parentId
       INNER LOOP JOIN Objects OC ON OC.Id = L.parentId
       LEFT LOOP JOIN Properties PInd ON PInd.ObjectId = OC.Id AND
 PInd.TypeId = @Index
    WHERE H.StatusId IN (@IODate, @ITDate) AND H.Itemdate >= @StartDate AND
 H.ItemDate < @EndDate + 1
      AND (H2.StatusId = @CODate OR EXISTS(SELECT TOP 1 * FROM MoveLink ML
                                            INNER JOIN History HL ON
 HL.ObjectId = ML.ObjectId
                                            INNER JOIN Status SL ON SL.Id =
 HL.StatusId AND SL.GroupId = @AccType AND SL.Code IN ('BANK', 'VEXELMANY')
                                           WHERE ML.MoveId = M.Id AND
 ML.TypeId = @Account))
      AND NOT EXISTS (SELECT TOP 1 * FROM History WHERE ObjectId =
 H2.ObjectId AND StatusId = @Tender)
   ) AS T
   ORDER BY T.Manager, T.PayDate, T.PayDocNum
 Пойдет ?
 
 P.S.
 
 SELECT
  (SELECT COUNT(*) FROM History) AS History
 ,(SELECT COUNT(*) FROM Objects) AS Objects
 ,(SELECT COUNT(*) FROM Movement) AS Movement
 ,(SELECT COUNT(*) FROM Links) AS Links
 ,(SELECT COUNT(*) FROM Strings) AS Strings
 ,(SELECT COUNT(*) FROM Properties) AS Properties
 ,(SELECT COUNT(*) FROM Doc) AS Doc
 History     Objects     Movement    Links       Strings     Properties  Doc
 ----------- ----------- ----------- ----------- ----------- ----------- ----
 -------
    10181181     3225063    12697674     6594693      998845     3686049
 1930949
 --
 Bye ...
 Тенцер А.Л.
 tolik@katren.ru
 ICQ 15925834
                                                                           
 --- ifmail v.2.15dev5
  * Origin: Katren (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 SELECT FROM INSERT ?   Leonid Sidorov   27 Mar 2001 20:46:06 
 Re: SELECT FROM INSERT ?   Igor V. Makeev   28 Mar 2001 12:02:39 
 Re: SELECT FROM INSERT ?   Maxim Tomilov   29 Mar 2001 19:30:27 
 RE: SELECT FROM INSERT ?   Drema*   29 Mar 2001 22:11:50 
 SELECT FROM INSERT ?   Andrey   30 Mar 2001 09:43:14 
 Re: SELECT FROM INSERT ?   Ilya Zvyagin   30 Mar 2001 09:55:06 
 RE: SELECT FROM INSERT ?   Drema*   30 Mar 2001 10:27:40 
 RE: SELECT FROM INSERT ?   Drema*   30 Mar 2001 19:17:28 
 Re: SELECT FROM INSERT ?   Roman S. Golubin   30 Mar 2001 21:10:43 
 SELECT FROM INSERT ?   Andrey   31 Mar 2001 01:27:28 
 RE: SELECT FROM INSERT ?   Drema*   31 Mar 2001 00:23:05 
 Re: SELECT FROM INSERT ?   Sergey Pratch   31 Mar 2001 18:07:40 
 Дремина хитрость 2   Andrey   01 Apr 2001 13:03:16 
 RE: Дремина хитрость 2   Drema*   01 Apr 2001 15:28:23 
 Дремина хитрость 2   Andrey   01 Apr 2001 20:43:00 
 RE: Дремина хитрость 2   Drema*   02 Apr 2001 23:11:06 
 Re: Дремина хитрость 2   Ilya Zvyagin   02 Apr 2001 12:44:01 
 Re: Дремина хитрость 2   Serg Vasiltsoff   02 Apr 2001 16:41:53 
 ЙRe: Дремина хитрость 2   Ilya Zvyagin   02 Apr 2001 17:38:59 
 Re: Дремина хитрость 2   Serg Vasiltsoff   02 Apr 2001 18:26:22 
 Re: Дремина хитрость 2   Ilya Zvyagin   02 Apr 2001 21:14:00 
 Re: Дремина хитрость 2   Serg Vasiltsoff   02 Apr 2001 22:58:47 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 10:49:55 
 Re: Дремина хитрость 2   Serg Vasiltsoff   03 Apr 2001 12:54:43 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 15:46:47 
 RE: Дремина хитрость 2   Drema*   02 Apr 2001 23:11:07 
 RE: Дремина хитрость 2   Drema*   02 Apr 2001 23:11:07 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 10:49:55 
 Re: Дремина хитрость 2   Serg Vasiltsoff   03 Apr 2001 12:54:43 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 16:07:17 
 Re: Дремина хитрость 2   Serg Vasiltsoff   03 Apr 2001 18:40:13 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 13:57:29 
 Re: Дремина хитрость 2   Serg Vasiltsoff   04 Apr 2001 15:29:06 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 17:25:26 
 RE: Дремина хитрость 2   Drema   03 Apr 2001 13:17:16 
 Re: Дремина хитрость 2   Tolik Tentser   03 Apr 2001 13:25:24 
 RE: Дремина хитрость 2   Drema   03 Apr 2001 14:16:42 
 Re: Дремина хитрость 2   Tolik Tentser   03 Apr 2001 14:35:07 
 RE: Дремина хитрость 2   Drema   04 Apr 2001 12:22:44 
 Re: Дремина хитрость 2   Tolik Tentser   04 Apr 2001 13:03:34 
 RE: Дремина хитрость 2   Drema   04 Apr 2001 15:25:02 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 17:29:28 
 Re: Дремина хитрость 2   Tolik Tentser   04 Apr 2001 18:24:32 
 Дремина хитрость 2   Sergey Ignatov   16 Apr 2001 23:34:30 
 Дремина хитрость 2   Sergey Ignatov   16 Apr 2001 23:08:19 
 Re: Дремина хитрость 2   Serg Vasiltsoff   04 Apr 2001 15:29:07 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 16:07:17 
 Re: Дремина хитрость 2   Serg Vasiltsoff   03 Apr 2001 16:15:24 
 RE: Дремина хитрость 2   Drema   04 Apr 2001 12:12:25 
 Re: Дремина хитрость 2   Serg Vasiltsoff   04 Apr 2001 12:59:29 
 RE: Дремина хитрость 2   Drema   04 Apr 2001 14:48:26 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 13:45:04 
 Re: Дремина хитрость 2   Serg Vasiltsoff   04 Apr 2001 15:29:07 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 13:45:04 
 Re: Дремина хитрость 2   Serg Vasiltsoff   04 Apr 2001 15:29:08 
 Re: Дремина хитрость 2   Tolik Gusin   09 Apr 2001 19:41:20 
 Re: Дремина хитрость 2   Anatoly Moskovsky   09 Apr 2001 20:40:22 
 Re: Дремина хитрость 2   Tolik Gusin   10 Apr 2001 19:01:32 
 Re: Дремина хитрость 2   Anatoly Moskovsky   10 Apr 2001 19:36:58 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 10:28:08 
 Re: Дремина хитрость 2   Anatoly Moskovsky   11 Apr 2001 12:46:42 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 18:55:02 
 Re: Дремина хитрость 2   Anatoly Moskovsky   11 Apr 2001 21:32:22 
 Re: Дремина хитрость 2   Tolik Gusin   11 Apr 2001 13:56:27 
 Re: Дремина хитрость 2   Anatoly Moskovsky   11 Apr 2001 15:16:10 
 Re: Дремина хитрость 2   Tolik Tentser   10 Apr 2001 18:09:35 
 Re: Дремина хитрость 2   Tolik Gusin   10 Apr 2001 19:01:28 
 Re[2]: Дремина хитрость 2   Drema   10 Apr 2001 22:42:27 
 Re: Re[2]: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 10:15:56 
 Re[4]: Дремина хитрость 2   Drema   11 Apr 2001 12:42:36 
 Re: Дремина хитрость 2   Tolik Gusin   11 Apr 2001 14:29:03 
 Hа: Дремина хитрость 2   Horsun Vlad   11 Apr 2001 15:16:11 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 19:19:29 
 Re: Дремина хитрость 2   Sergey Pratch   12 Apr 2001 19:42:52 
 Re: Дремина хитрость 2   Igor V. Makeev   13 Apr 2001 10:03:43 
 Re: Дремина хитрость 2   Sergey Pratch   13 Apr 2001 18:39:06 
 Insert в MSA   Igor V. Makeev   14 Apr 2001 14:43:45 
 Re: Insert в MSA   Sergey Pratch   16 Apr 2001 12:48:20 
 Re: Insert в MSA   Igor V. Makeev   16 Apr 2001 15:03:37 
 Re: Дремина хитрость 2   Tolik Gusin   11 Apr 2001 14:02:35 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 19:05:14 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 19:07:17 
 Re[2]: Дремина хитрость 2   Drema   11 Apr 2001 20:10:20 
 Дремина хитрость 2   Akzhan Abdulin   12 Apr 2001 13:15:01 
 Re: Дремина хитрость 2   Ilya Zvyagin   12 Apr 2001 18:21:00 
 Re: Дремина хитрость 2   Sergey Pratch   12 Apr 2001 19:42:53 
 Re: Дремина хитрость 2   Tolik Tentser   11 Apr 2001 18:44:45 
 Дремина хитрость 2   Akzhan Abdulin   12 Apr 2001 12:59:18 
 Дремина хитрость 2   Akzhan Abdulin   10 Apr 2001 15:20:38 
 Re: Дремина хитрость 2   Tolik Gusin   10 Apr 2001 19:10:25 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 10:28:08 
 Re: Дремина хитрость 2   Tolik Gusin   11 Apr 2001 13:54:23 
 Re: Дремина хитрость 2   Alexander Sakhatovskiy   11 Apr 2001 14:12:48 
 Re: Дремина хитрость 2   Tolik Gusin   11 Apr 2001 14:47:33 
 Re: Дремина хитрость 2   Ilya Zvyagin   11 Apr 2001 18:59:08 
 Дремина хитрость 2   Akzhan Abdulin   12 Apr 2001 13:02:40 
 Дремина хитрость 2   Makarov Vladimir   19 Apr 2001 10:20:17 
 Hа: Дремина хитрость 2   Horsun Vlad   11 Apr 2001 10:42:23 
 Re: Дремина хитрость 2   Serg Vasiltsoff   03 Apr 2001 12:54:43 
 RE: Дремина хитрость 2   Drema   03 Apr 2001 13:31:38 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 16:15:24 
 Re: Дремина хитрость 2   Ilya Zvyagin   02 Apr 2001 12:29:44 
 Re: Дремина хитрость 2   Sergey Pratch   02 Apr 2001 18:32:31 
 RE: Дремина хитрость 2   Drema*   02 Apr 2001 23:11:07 
 Re: Дремина хитрость 2   Serg Vasiltsoff   03 Apr 2001 10:58:04 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 13:15:14 
 RE: Дремина хитрость 2   Drema   03 Apr 2001 16:19:27 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 13:34:57 
 Дремина хитрость 2   Andrey   03 Apr 2001 09:14:42 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 10:49:55 
 RE: Дремина хитрость 2   Drema   03 Apr 2001 12:48:28 
 Re: Дремина хитрость 2   Ilya Zvyagin   03 Apr 2001 16:13:22 
 RE: Дремина хитрость 2   Drema   04 Apr 2001 12:28:49 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 13:45:04 
 Дремина хитрость 2   Akzhan Abdulin   03 Apr 2001 15:20:06 
 Re: Дремина хитрость 2   Ilya Zvyagin   04 Apr 2001 10:36:26 
 RE: Дремина хитрость 2   Drema   04 Apr 2001 14:48:26 
 Дремина хитрость 2   Akzhan Abdulin   04 Apr 2001 16:37:16 
 Дремина хитрость 2   Akzhan Abdulin   04 Apr 2001 16:28:32 
 Дремина хитрость.   Andrey   01 Apr 2001 13:03:40 
 Re: Дремина хитрость.   Serg Vasiltsoff   02 Apr 2001 16:41:54 
 Re: SELECT FROM INSERT ?   Tolik Tentser   30 Mar 2001 06:38:46 
 Re: SELECT FROM INSERT ?   Ilya Zvyagin   30 Mar 2001 09:59:10 
 Re: SELECT FROM INSERT ?   Ilya Zvyagin   30 Mar 2001 09:57:07 
 SELECT FROM INSERT ?   Andrei Sokolik   28 Mar 2001 12:16:18 
 Re: SELECT FROM INSERT ?   H.H.†гЄ®ў   28 Mar 2001 20:00:08 
Архивное /su.dbms.sql/135372ede2e16.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional