Вы можете оптимизировать для быстрого времени запроса с вычисляемым столбцом. Вычисляемый столбец не может напрямую использовать функции XML, поэтому вы должны заключить их в функцию:
go
create function dbo.GetSomethingExists(
@Doc xml)
returns bit
with schemabinding
as begin return (
select @Doc.exist('/xml/root/property/text()[. = "something"]')
) end
go
create table TestTable (
Doc xml,
SomethingExists as dbo.GetSomethingExists(Doc) persisted
)
go
Если вы объявите функцию с помощью schemabinding
, вы можете создать индекс для SomethingExists:
create index IX_TestTable_SomethingExists on TestTable(SomethingExists)
Это должно сделать запрос намного быстрее.