Por que a execução de um top (1) em uma coluna indexada no SQL Server é lenta?
Estou intrigado com o seguinte. Eu tenho um banco de dados com cerca de 10 milhões de linhas e (entre outros índices) em 1 coluna (campaignid_int) é um índice.
Agora eu tenho 700k linhas onde o campaignid é de fato 3835
Para todas essas linhas, o connectionid é o mesmo.
Eu só quero descobrir essa conexão;
use messaging_db;
SELECT TOP (1) connectionid
FROM outgoing_messages WITH (NOLOCK)
WHERE (campaignid_int = 3835)
Agora, esta consulta leva aproximadamente 30 segundos para ser executada!
Eu (com meu pequeno conhecimento de banco de dados) esperaria que ele pegasse qualquer uma das linhas e me retornasse essa conexão
Se eu testar essa mesma consulta para uma campanha que possui apenas 1 entrada, ela será muito rápida. Então o índice funciona.
Como eu lidaria com isso e por que isso não funciona?
editar:
estimated execution plan:
select (0%) - top (0%) - clustered index scan (100%)