Можно ли создать индексированное представление из данных XML в Sql Server 2008? - PullRequest
0 голосов
/ 08 июля 2011

В документации 2005 я вижу, что нельзя создать индексированное представление из столбца Xml.

Возможно ли это в 2008 или 2008R2?Я не могу найти никакой документации о том, что это что-то, что было добавлено, но я жду подтверждения, и у меня нет удобного доступа к среде 2008 года.

РЕДАКТИРОВАТЬ

Моя мотивация заключается в том, что объем Xml растет до такой степени, что отчеты SSRS, которые собирают данные из Xml, становятся медленными.

Ответы [ 2 ]

6 голосов
/ 08 июля 2011

В зависимости от ваших потребностей вы можете сделать следующее:

  • создать набор хранимых функций, которые извлекают определенные биты ключевой информации из вашего XML (функция получает XML в качестве входных данных, извлекает информацию, используя XPath / XQuery, возвращает значение VARCHAR или INT или что-то в этом родевычисляемые столбцы , которые ссылаются на эти функции, с ключевым словом PERSISTED:

    ALTER TABLE dbo.YourTable
       ADD ComputedColumns1 AS dbo.SomeFunction(XmlColumn) PERSISTED
    
  • создают представление таблицы и этих вычисляемых столбцов с привязкой схемы:

    CREATE VIEW vYourView 
    WITH SCHEMABINDING
    AS  
          SELECT (list of columns)
          FROM dbo.YourTable
    
  • создать уникальный кластеризованный индекс для этого представления - если вы не нарушили ни одно из требований индексированного представления, это должно работать просто отлично:

    CREATE UNIQUE CLUSTERED INDEX CIX_YourView ON dbo.vYourView(.....)
    

Это прекрасно работает, если вам нужно извлечь небольшое количество ключевых битов информации из столбца XML - это определенно не рекомендуется для большого количества элементов / значений XML.

3 голосов
/ 08 июля 2011

Я не верю, что это возможно.Без лучшего объяснения того, что вы пытаетесь сделать, одно предложение, которое я могу предложить, состоит в том, чтобы отделить XML перед вставкой (возможно, с использованием триггера вместо, или выполнить это измельчение на уровне приложения) и сохранить часть (и), которую выхотите использовать для индексированного представления в отдельных столбцах, отличных от XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...