Это зависит от того, что вам нужно сделать с вашим XML.У меня есть аналогичная настройка, в которой структура таблицы была сделана «общей», а все, что связано с продуктом, было спрятано в поле XML.
Мы также заметили, что сложный способ запроса XML не является исключительно быстрым ....и использование индексов XML (которые также предлагает SQL Server) заставило размер нашей базы данных подскочить примерно с 1 ГБ до более 10 ГБ .....
Что мы делаем сейчас для отдельных элементов из XML, так этоthis:
- создайте пользовательскую функцию, которая получает содержимое XML в качестве своего параметра
- , извлекает значение из этого параметра XML
- , используя этот UDF для определениявычисляемый постоянный столбец в родительской таблице
. Таким образом мы можем извлечь определенные значения ключей (например, «ProductID» или «ProductName») из XML и сохранить их в родительской таблице в виде столбца.,Он вычисляется, например, всегда актуален, и поскольку он также сохраняется, он хранится вместе с данными таблицы, например, он не запрашивается постоянно и не пересчитывается.И так как они сохраняются с данными таблицы, вы даже можете поместить в них индекс.
Это работает очень хорошо, но работает только в тех случаях, когда у вас есть отдельные, однозначные вещи, которые вы хотите найтиXML.Для этого случая это отличное решение, и оно ускоряет запросы к этим значениям на несколько порядков.