Советник по настройке базы данных SQL Server предлагает существующий кластерный индекс

У меня есть таблица, определение которой выглядит так:

CREATE TABLE Budget_Cost_Centers
(
    CostCenterIDX INT NOT NULL,
    Name VARCHAR(100) NOT NULL,
    ...
    CONSTRAINT PK_Budget_Cost_Centers 
        PRIMARY KEY CLUSTERED (CostCenterIDX ASC)
);

(некоторые столбцы были опущены, потому что они не актуальны)

Теперь я запускаю помощник по настройке базы данных для запроса к этой таблице, и он предлагает:

CREATE NONCLUSTERED INDEX [_dta_index_Budget_Cost_Centers_5_1079674894__K1] 
ON [dbo].[Budget_Cost_Centers] ([COSTCENTERIDX] ASC)
   WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]

Что, очевидно, совпадает с существующим первичным ключом. Любая идея, почему это предложит это? Попытка убедиться, что я не пропускаю кое-что о том, как работает SQL Server, в отличие от советника, предлагающего что-то нелепое, потому что это всего лишь ограничения автоматического анализа настройки.


Больше информации: я разбил запрос, который выдал эту рекомендацию, на самое необходимое:

select
    d.PhaseIDX,
    sum(d.YTDActual) YTDActual
from 
    Budget_Cost_Centers cc
join 
    Budget_Cost_Centers mc on cc.MasterCostCenteridx = mc.CostCenterIDX
join 
    Budget_Detail d on cc.CostCenterIDX= d.CostCenterIDX
group by 
    d.PhaseIDX

Самостоятельные ссылки на таблицу и автор запроса присоединили ее к себе, чтобы отфильтровать записи только к тем, которые содержали указанную ссылку. Изменение запроса на следующие эквивалентные результаты приводит к тому, что советник больше не дает рекомендации:

select
    d.PhaseIDX,
    sum(d.YTDActual) YTDActual
from 
    Budget_Cost_Centers cc
join 
    Budget_Detail d on cc.CostCenterIDX = d.CostCenterIDX
where 
    cc.MasterCostCenterIDX is not null
group by 
    d.PhaseIDX

Вот план выполнения с оригинальным sql:

План выполнения

1 ответ

ПК кластеризован, а другой не кластеризован. Там может быть преимущество наличия обоих.

Некластерный индекс и кластерный индекс в одном столбце

Другие вопросы по тегам