Учитывая текущую информацию, я думаю, что лучшим решением является использование XML-индекса в SQL Server.
Существует четыре типа XML-индексов:
- Первичный
- Вторичный для PATH
- Вторичный для PROPERTY
- Вторичный для VALUE
В вашем случае оказывается, что вы знаете путь к нужным данным, естественно,Вторичный индекс PATH кажется наиболее подходящим.
Выполните следующие шаги, чтобы создать этот индекс:
Создать первичный индекс
create primary xml index XIX_XmlColumnName on XmlTable(XmlColumnName)
go
Это будетсоздайте «базовый» индекс для вашего столбца xml, в основном это означает, что xml будет уничтожен в скрытой таблице и сохранен со значениями, в которых каждый элемент превращается в одну строку.
Создание индекса вторичного пути
create xml index XIX_XmlColumnName_Path on XmlTable(XmlColumnName)
using xml index XIX_XmlColumnName for path
go
Это создаст вторичный индекс с использованием столбца пути в первичном индексе (который теперь мы знаем как таблицу).
Наконец, выполните запрос (sql), такой как этот, впроцедура и позвоните, что из вашего приложенияion:
select XmlColumnName.query('/path/to/element')
from XmlTable
Конечно, это не linq-запрос / решение, но лучше всегда использовать подходящий инструмент, а не пытаться его форсировать.
Для получения более подробной информации об индексах xml см. эту статью MSDN .