2010-06-07 3 views
1

Я использую простую таблицу с 6 столбцами, 3 из которых имеют тип XML, а не с ограничениями схемы. Когда таблица достигает размера около 120 000 или 150 000 строк, я вижу значительную стоимость исполнения при выполнении любого запроса в таблице. Для сравнения у меня есть другая таблица, которая растет в размере примерно с той же скоростью, но содержит только скалярные типы (int, datetime, несколько столбцов float). Эта таблица отлично работает даже после 200 000 строк. И, кстати, я не использую XQuery в столбцах xml, я использую только обычные запросы SQL-запросов.Влияние производительности при использовании столбцов XML в таблице с MS SQL 2008

Некоторые особенности: обе таблицы содержат поле DateTime, называемое SampleTime. заявление как (это в хранимой процедуре, но я покажу вам фактическое заявление)

SELECT MAX(sampleTime) SampleTime 
FROM dbo.MyRecords 
WHERE [email protected] 

занимает 0 секунд на столе без XML-столбцов, и все, что от 13 до 20 секунд на столе со столбцами XML. Это зависит от того, на каком диске я устанавливаю свою базу данных. На данный момент он сидит на другом шпинделе (не C :) и занимает 13 секунд.

Кто-нибудь видел это поведение раньше или имел какой-либо намек на то, что я делаю неправильно? Я пробовал это с SQL 2008 EXPRESS и полномасштабным SQL Server 2008, который не имел никакого значения. О, одна последняя деталь: я делаю это из приложения C#, .NET 3.5, используя SqlConnection, SqlReader и т. Д.

Буду признателен за понимание этого, спасибо!

Сэм

ответ

0

У вас есть индекс по PlacementID и sampleTime в таком порядке?

И размер таблицы и столбцы типов не имеет значение, если индекс может удовлетворить запрос («покрывающий»)

+0

Производительность улучшилась, когда я помещаю указатель на два столбца, которые я использую для поиска в таблице. Спасибо! –

0

Мы заметили значительные проблемы с производительностью, когда размер отдельных строк XML превзошел 64KB. Не уверен, что вы в этом диапазоне или нет, но это была разница между почти мгновенными запросами и теми, кто занимает 60 секунд.

В конце дня мы извлекли все запрашиваемые данные в обычные таблицы sql для выполнения наших запросов. Кстати, это был последний раз, когда мы использовали тип данных xml.