У меня есть запрос, который выглядит следующим образом:
SELECT
p.pProfileXml.value(''(Profile/ssn)[1]'', ''int'') ssn,
p.pProfileXml.value(''(Profile/date-birth)[1]'', ''date'') [date-birth],
p.pProfileXml.value(''(Profile/bad-field)[1]'', ''varchar(max)'') [bad-field],
p.pProfileXml.value(''(Profile/cb-bal)[1]'', ''float'') [e1_f1],
p.pProfileXml.value(''(Profile/date-hire-orig)[1]'', ''date'') [e1_f2],
p.pProfileXml.value(''(Profile/date-birth)[1]'', ''date'') [e2_f1]
FROM Profile p WHERE p.pgKey = 52
Выполнение занимает около 20 секунд. В таблице профиля ~ 300 тыс. Строк, из которых ~ 43 тыс. Связаны с pgKey = 52.
Я надеялся, что этот запрос будет более производительным. После добавления Xml первичного (и вторичного) индекса (ов) время выполнения теперь составляет 30-40 секунд?!
Может ли кто-нибудь подумать / объяснить причину, по которой чтение является результатом этого таблица теперь работает медленнее с XML Индексами на?
ОБНОВЛЕНИЕ
Некоторые показатели производительности:
-- Nonclustered pKey, no Xml Indexes - 10-11 secs
-- Clustered pKey, no Xml Indexes - 10 secs
-- Clustered pKey, Primary Xml Index - 37-41 secs
-- Clustered pKey, Primary Xml Index, secondary PROPERTY Index - 37-41 secs
Кроме того, похоже, что проблема с моим XML первичным (вторичный индекс СОБСТВЕННОСТИ). Когда я наводил курсор на индекс в плане выполнения, количество прочитанных строк всегда НАМНОГО больше, чем фактических. Это кажется неправильным?