gpt4 book ai didi

sql-server - 为什么在 SQL Server 中的索引列上执行 top(1) 速度很慢?

转载 作者:行者123 更新时间:2023-12-02 01:57:05 25 4
gpt4 key购买 nike

我对以下内容感到困惑。我有一个大约有 1000 万行的数据库,并且(在其他索引中)1 列 (campaignid_int) 是一个索引。

现在我有 700k 行,其中营销事件 ID 确实是 3835

对于所有这些行,connectionid 都是相同的。

我只是想找出这个connectionid。

 use messaging_db;
SELECT TOP (1) connectionid
FROM outgoing_messages WITH (NOLOCK)
WHERE (campaignid_int = 3835)

现在执行此查询大约需要 30 秒!

我(以我的小数据库知识)希望它会获取任何行,并返回该connectionid

如果我针对只有 1 个条目的营销事件测试相同的查询,速度会非常快。所以索引有效。

我该如何解决这个问题以及为什么这不起作用?

编辑:

estimated execution plan:

select (0%) - top (0%) - clustered index scan (100%)

最佳答案

根据统计信息,您应该明确要求优化器使用您创建的索引而不是聚集索引。

SELECT  TOP (1) connectionid
FROM outgoing_messages WITH (NOLOCK, index(idx_connectionid))
WHERE (campaignid_int = 3835)

希望能解决问题。

问候,恩里克

关于sql-server - 为什么在 SQL Server 中的索引列上执行 top(1) 速度很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com