Я хочу запросить более 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