Как увеличить скорость извлечения больших данных в SQL Server - PullRequest
0 голосов
/ 05 декабря 2018

Ниже приведен мой запрос, который занимает 2:26 минуты для извлечения 9'619'516 записей из базы данных SQL Server 2008 R2

Запрос:

SELECT 
    SERVERID, MSGID, BPID, FLOWID, FSID, FSSTEP, 
    MESSAGETYPEID, MESSAGESTRING, USERBLOB, USERCODE, 
    CREATEDATE, CREATETIME, OBJECTLEVEL, CATEGORY, 
    USERKEY1, USERKEY2, VERSIONKEY, STATUSCODE, SEVERITY, 
    EXTENSION, PROJECTKEY, BLOBEXISTS, ROOTFSID, 
    FLOWREQUESTID, FILELOCATION, RUNID, 
    TEMP_MGXPI4_1.DateTimeObject, TEMP_MGXPI4_1.TEMP_ROW_NUM 
FROM
    (SELECT 
         SERVERID, MSGID, BPID, FLOWID, FSID, FSSTEP, 
         MESSAGETYPEID, MESSAGESTRING, USERBLOB, USERCODE, 
         CREATEDATE, CREATETIME, OBJECTLEVEL, CATEGORY, 
         USERKEY1, USERKEY2, VERSIONKEY, STATUSCODE, 
         SEVERITY, EXTENSION, PROJECTKEY, BLOBEXISTS, ROOTFSID, 
         FLOWREQUESTID, FILELOCATION, RUNID,
         REPLACE(CONVERT(NVARCHAR(10),CREATEDATE, 126),'-','') + CONVERT(NVARCHAR(50),CREATETIME) AS DateTimeObject,
         ROW_NUMBER() OVER(ORDER BY CREATEDATE DESC, CREATETIME DESC, MSGID DESC) AS TEMP_ROW_NUM 
     FROM 
         IFS_ACTLOG 
     WHERE 
         PROJECTKEY = 'Project1' AND ROOTFSID = 1) AS TEMP_MGXPI4_1

План выполнения SQL Server иззапрос:

Execution plan of query

1 Ответ

0 голосов
/ 05 декабря 2018

По всей вероятности, ваша производительность основана на перемещении больших объемов данных.

Но, с точки зрения производительности, ваш запрос:

SELECT . . .,
   ROW_NUMBER() OVER (ORDER BY CREATEDATE DESC, CREATETIME DESC, MSGID DESC) AS TEMP_ROW_NUM 
 FROM  IFS_ACTLOG 
 WHERE PROJECTKEY = 'Project1' AND ROOTFSID = 1

Этот запрос предлагает индекс для(PROJECTKEY, ROOTFSID, CREATEDATE DESC, CREATETIME DESC, MSGID).

Тем не менее, даже если запрос выполняется быстрее, объем данных, перемещаемых за пределы базы данных, все равно будет занимать время для обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...