我对以下内容感到困惑。我有一个大约有1000万行的数据库,并且(在其他索引中)第1列(campaignid_int)是一个索引。
现在我有70万行,其Campaignid确实为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)
我希望它能解决问题。
问候,
恩里克