Индекс MS Sql 2008 по двум столбцам для 2D-позиции - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть таблица с именем «Карта» со структурой «XPos int, YPos int, FieldType int».

«XPos» и «YPos» являются первичными ключами. В зависимости от этой таблицы существует несколько таблиц, ссылающихся на столбцы «XPos» и «YPos».

В таблице «Карта» пользователи не могут добавлять или удалять строки. Редко изменяется значение в столбце «FieldType».

Большинство выбранных выглядит следующим образом:

SELECT M.XPos, M.YPos, M.FieldType, N.NoteTitle, N.NoteDescription
FROM Map AS M
INNER JOIN Note AS N ON M.XPos = N.XPos AND M.YPos = N.YPos
WHERE M.XPos >= 248 AND M.XPos <= 311
      AND M.YPos >= 578 AND M.YPos <= 715

Как мне индексировать его для хорошего выбора производительности ?. Теперь у меня есть один кластерный индекс на «XPos, YPos», но я не думаю, что это лучший способ.

1 Ответ

0 голосов
/ 07 сентября 2010

создайте индекс по выбранным вами полям, а во включенные столбцы добавьте поля, по которым вы фильтруете.

вот пример:

CREATE NONCLUSTERED INDEX [IDX_Cover] ON [dbo]. [tblPROJECTS] ([QUOTESTATUS] ASC) ВКЛЮЧЕНО ([Project_Amount], [SubCost], [VendorCost], [CustCost], [crmProjID]) С (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_N_D_D_DB_DB_DB_DB OFF_OFF_NID_OFF_DID_BIDDROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [ОСНОВНОЙ]

этот индекс будет хорошо работать для такого утверждения:

выберите QuoteStatus из dbo.tblПроекты, гдеProject_Amount> 0 и SubCost = 0 и VendorCost> 0 и CustCost> 0 и crmProjID = 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...