一个简单的单表查询的 SQL 超时

问题描述 投票:0回答:1

我的查询非常简单,但有时会出现超时异常。

SELECT TOP 100 * 
FROM [cmn].[ProductChange] 
WHERE shop_id = @shopId 
ORDER BY changed_at DESC

这是执行计划:

Execution plan

如果我在 SSMS 中测试查询,第一次非常慢,超过 30 秒,但下一次,速度快得多。

这是表的主键:

ALTER TABLE [cmn].[ProductChange] 
    ADD CONSTRAINT [PK_cmn_ProductChange] 
        PRIMARY KEY CLUSTERED ([product_id] ASC)
                WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
                      ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

我有大约 350k 行,我认为没有那么多。他们是吗?

我在商店中只有一个 FK,PK 是一个外部 ID,它没有连接到任何其他表。

我怎样才能使这个查询更快?

sql sql-server performance connection-timeout
1个回答
0
投票

shop_id
列上创建非聚集索引。这将导致从键查找进行索引扫描,并带来更好的性能。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.