Оптимизация запросов к базе данных с использованием SQL / XML.Предлагаемые ресурсы? - PullRequest
0 голосов
/ 10 июля 2010

Этот вопрос имеет как теоретический, так и практический характер.Будут оценены любые результаты, указывающие полезные ресурсы для оптимизации запросов.

Существует большая база данных SQL, которая хранит большой объем данных, хранящихся в полях SQLXML.Запрашивать XML напрямую недостаточно быстро.

Я просмотрел некоторые статьи MSDN по оптимизации SQLXML (например, http://msdn.microsoft.com/en-us/library/aa902661(SQL.80).aspx), и знаю, что индексирование полей xml с возможностью поиска увеличит скорость поиска.

Может кто-нибудь порекомендовать какие-либо дополнительныересурсы для оптимизации баз данных, как в этой среде, так и в целом, которые особенно полезны? Как всегда, я благодарен вам за помощь

Ответы [ 3 ]

0 голосов
/ 10 июля 2010

Показать примерный план выполнения.

Также:

SET STATISTICS IO ON
SET STATISTICS TIME ON
0 голосов
/ 10 июля 2010

Это зависит от того, что вам нужно сделать с вашим XML.У меня есть аналогичная настройка, в которой структура таблицы была сделана «общей», а все, что связано с продуктом, было спрятано в поле XML.

Мы также заметили, что сложный способ запроса XML не является исключительно быстрым ....и использование индексов XML (которые также предлагает SQL Server) заставило размер нашей базы данных подскочить примерно с 1 ГБ до более 10 ГБ .....

Что мы делаем сейчас для отдельных элементов из XML, так этоthis:

  • создайте пользовательскую функцию, которая получает содержимое XML в качестве своего параметра
  • , извлекает значение из этого параметра XML
  • , используя этот UDF для определениявычисляемый постоянный столбец в родительской таблице

. Таким образом мы можем извлечь определенные значения ключей (например, «ProductID» или «ProductName») из XML и сохранить их в родительской таблице в виде столбца.,Он вычисляется, например, всегда актуален, и поскольку он также сохраняется, он хранится вместе с данными таблицы, например, он не запрашивается постоянно и не пересчитывается.И так как они сохраняются с данными таблицы, вы даже можете поместить в них индекс.

Это работает очень хорошо, но работает только в тех случаях, когда у вас есть отдельные, однозначные вещи, которые вы хотите найтиXML.Для этого случая это отличное решение, и оно ускоряет запросы к этим значениям на несколько порядков.

0 голосов
/ 10 июля 2010

Пока вы точно не отвечаете на ваш вопрос, вы можете подумать о другой стратегии поиска.SQL Server / Oracle и MySQL отлично подходят для хранения больших объемов реляционных данных, однако в большинстве случаев они не так хороши, когда речь идет о поиске текста (очевидно, это зависит от того, что вы ищете, и ваших индексов).

Я бы посоветовал вам потратить немного времени на поиск в поисковой системе, подобной Lucene , так как она может удовлетворить ваши потребности лучше, чем SQL?

...