SQL XML Запрос медленнее с XML индексами - PullRequest
1 голос
/ 18 июня 2020

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

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 первичным (вторичный индекс СОБСТВЕННОСТИ). Когда я наводил курсор на индекс в плане выполнения, количество прочитанных строк всегда НАМНОГО больше, чем фактических. Это кажется неправильным?

enter image description here

...