#c# #.net #sql-server-2008 #ado.net
#c# #.net #sql-server-2008 #ado.net
Вопрос:
Мне нужно получить около 50-100 тысяч записей из таблицы. Два поля содержат очень длинные строки. Поле 1 содержит до 2048 символов, а поле 2 — до 255.
Получение только этих двух полей, 50 тыс. строк, занимает около 120 секунд. Есть ли способ использовать сжатие или как-то оптимизировать извлечение этих данных? Я использую адаптер данных для заполнения таблицы данных.
Примечание: это просто оператор select, без предложения where .
Комментарии:
1. Какие индексы существуют в этой таблице? Сколько времени занимает запрос, когда вы выполняете его через SSMS?
2. Как вы используете эти записи? Я думаю, что лучше всего изменить способ обработки, чтобы вам не нужно было извлекать все записи в одном запросе. Лучший способ сделать это будет зависеть от того, что вы делаете с записями. Вы добавляете немного деталей?
3. Записи необходимо удалить и обработать, но они зависят от данных из других строк
Ответ №1:
Простой ответ: НЕ ИЗВЛЕКАЙТЕ от 50.000 до 100.000 строк. Точка. Массовые передачи всегда требуют времени, а сжатие создает большую нагрузку на процессор. Я все еще должен прийти к случаю, когда извлечение такого количества данных за пределы чистой передачи данных является целесообразным предложением — в большинстве случаев это признак плохой архитектуры.
Комментарии:
1. Я 1 это. Я попытаюсь найти другой способ.
2. размер данных не коррелирует с архитектурой, поэтому ваше утверждение основано на неверном предположении