我正在使用 Microsoft SQL Server 2008,并且我有这个存储过程:
ALTER PROCEDURE [dbo].[getMessagesByDates]
(@orderdateFirst varchar(50),
@orderdateLast varchar(50))
AS
BEGIN
SET NOCOUNT ON
SELECT TOP 100 [RecordID]
,[MessageID]
,[ProcessName]
,[ProcessInstanceID]
,[Arrival]
,[MessageDateTime]
,[RecvFileName]
,[ArchivePath]
,[SubjectID]
,[SrcMessageID]
,[SourceSystem]
,[SourceLocation]
,[MsgKey1]
,[MsgKey2]
,[MsgKey3]
FROM [Messages].[dbo].[MessagesLog]
WHERE
[Arrival] BETWEEN CONVERT(datetime, @orderdateFirst)
AND CONVERT(datetime, @orderdateLast)
ORDER BY
[Arrival] DESC
END
[Arrival](日期时间类型)是 [MessagesLog] 表中的聚集唯一索引。[RecordID](bigint 类型)是我的聚集索引中的第二个索引键列。
如何提高上述程序的性能?我正在处理数千行,这需要很多时间。