我正在尝试优化下面的查询,因此我将其主键
编入索引DELETE from LSS_FPAVServiceXml
WHERE CONVERT(datetime, LEFT(trackingid, 8)) < CAST(CONVERT(CHAR(10), GETDATE() - 90, 101) AS SMALLDATETIME)
trackingid
的索引代码为:
ALTER TABLE [dbo].[LSS_FPAVServiceXml]
ADD CONSTRAINT [PK_LSS_FPAVRequest]
PRIMARY KEY CLUSTERED ([trackingid] ASC)
之后执行计划成本:73%。还有其他方法可以优化此查询吗?
请建议!
答案 0 :(得分:2)
如果您是数据库的不幸所有者,其中多个值存储在单个字段中,则有三个选项。
在这种情况下你很幸运。根据示例数据,您应该能够这样做:
DELETE from LSS_FPAVServiceXml
where trackingid LIKE CONVERT(VARCHAR,DATEADD(DAY,-90,GETDATE()),112) + '%'