Як SQL Server визначає порядок записів у наборі результатів виконання запитів?
Я намагаюся зробити з нього голови чи хвости, але я почуваю, що я дряпаю голову. Коли я змінюю поля, я вибираю порядок, також змінюється. Коли я виконую нижче SQL з a, SELECT *
я отримую ті ж записи, але в набагато іншому порядку.
SELECT TOP (900)
AD.ATTACHMENTID,
AD.NAME,
AD.ISINLINE,
AD.INSERTEDDATETIME,
ATMT.ATTACHMENTBLOB,
U.UFID
FROM ATTACHMENTDETAIL AD WITH (NOLOCK)
INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID
INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID
INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID
INNER JOIN MESSAGEDETAIL MD ON MD.MESSAGEID = MA.MESSAGEID
INNER JOIN [USER] U ON U.ID = MD.USERID
LEFT OUTER JOIN XmlExtractionMapping XM ON MA.MESSAGEID = XM.MessageId
WHERE AD.FILEBOXTOKEN IS NULL
AND (XM.XMLEXTRACTIONDATE IS NOT NULL OR
(MSG.MESSAGESOURCEID = 1 AND MD.FolderId <> -4))
AND AD.ISINLINE = 'FALSE'
ORDER BY
застережень, SQL Server (і будь-який інший RDBMS) робить все, що вам здається .
NOLOCK
- ви побачите всілякі причини, чому вам не слід користуватися ним. Про останнє див. Sqlblog.com/blogs/aaron_bertrand/archive/2009/10/11/…