Я использую простую таблицу с 6 столбцами, 3 из которых имеют тип XML, не ограниченный схемой.
Когда размер таблицы достигает 120 000 или 150 000 строк, я вижу значительную потерю производительности при выполнении любого запроса в таблице. Для сравнения у меня есть другая таблица, которая увеличивается в размере примерно с той же скоростью, но содержит только скалярные типы (int, datetime, несколько столбцов с плавающей точкой). Эта таблица отлично работает даже после 200 000 строк.
И, кстати, я не использую XQuery для столбцов xml, я использую только обычные операторы SQL-запросов.
Некоторые особенности: обе таблицы содержат поле DateTime с именем SampleTime.
как оператор (он находится в хранимой процедуре, но я покажу вам фактический оператор)
SELECT MAX(sampleTime) SampleTime
FROM dbo.MyRecords
WHERE PlacementID=@somenumber
занимает 0 секунд для таблицы без столбцов xml и от 13 до 20 секунд для таблицы с столбцами XML. Это зависит от того, на каком диске я установил базу данных. На данный момент он сидит на другом шпинделе (не C :) и занимает 13 секунд.
Кто-нибудь видел такое поведение раньше, или есть какие-то намеки на то, что я делаю неправильно?
Я попробовал это с SQL 2008 EXPRESS и полноценным SQL Server 2008, что не имело никакого значения.
О, еще одна деталь: я делаю это из приложения на C #, .NET 3.5, используя SqlConnection, SqlReader и т. Д.
Буду признателен за понимание, спасибо!
Sam