Правильный ли тип данных XML для больших таблиц? - PullRequest
1 голос
/ 07 февраля 2012

Я хочу запросить более 14 000 000 документов, хранящихся в виде поля XML в SQL Server.

Я сгенерировал 1 000 000 строк в базе данных для тестирования, но простой выбор без условия «где» занимает около 3 минут.Я также применил XML Indexing, но он все еще не приемлем по производительности.Подобный сценарий занимает 19 секунд для аналогичной таблицы, в которой все введенные поля заполнены.

Вот моя типизированная таблица:

CREATE TABLE [dbo].[Fields] (
[Id]          BIGINT     IDENTITY (1, 1) NOT NULL,
[Title]       NCHAR (10) NOT NULL,
[Duration]    INT        NOT NULL,
[Cost]        MONEY      NOT NULL,
[Consignee]   BIGINT     NOT NULL,
[Date]        DATETIME   NOT NULL,
[TariffId]    BIGINT     NOT NULL,
[InvoiceType] NCHAR (10) NOT NULL,
[IsPayed]     BIT        NOT NULL
);

, и это один пример XML:

<Invoice>
  <Id>1</Id>
  <Title>title</Title>
  <Duration>726643700</Duration>
  <Cost>312118909727165.6133</Cost>
  <Consignee>3120910928797722624</Consignee>
  <Date>4543-07-16T01:40:29.623</Date>
  <TariffId>3120910928797722624</TariffId>
  <InvoiceType>InvoiceType</InvoiceType>
  <IsPayed>1</IsPayed>
</Invoice>

Это индексы, которые я применил:

CREATE XML INDEX idx_xCol_Path on [dbo].[XML] (InvoiceItem)
   USING XML INDEX idx_xCol FOR PATH

CREATE XML INDEX idx_xCol_Value on [dbo].[XML] (InvoiceItem)
   USING XML INDEX idx_xCol FOR VALUE

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Мои тесты меняли мое решение. XML отлично подходит для 1-2 миллионов записей. В моем случае срок службы приложения должен составлять более 3 лет при скорости производства документов. Поэтому я попытался использовать таблицы вместо полей XML. Другим возможным решением может быть отдельная запись, но существует ограничение на размер документа XML. Наблюдая за производительностью и количеством записей, я обнаружил, что после миллиона записей она падает. Кроме того, индексные файлы в SQL растут недопустимо с таким масштабом.

1 голос
/ 14 июля 2015

Большой НЕТ. Избегайте XML для таблиц с большим количеством записей, так как определение записи имеет тенденцию повторяться снова и снова. XML подходит для документов, где размер наценки меньше по сравнению с данными. Если вам нужна удобочитаемая таблица, используйте csv или аналогичный формат.

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