Считыватель данных
Самый быстрый доступ к SQL вы получите с SqlDataReader.
Профиль
На самом деле стоит профилировать, где ваша проблема с производительностью. Обычно, когда вы думаете, что проблема с производительностью, оказывается совершенно неправильной после того, как вы ее профилируете.
Например, это может быть:
- Время... которое требуется для выполнения запроса
- Время... данные тратятся на копирование через границу сети/процесса.
- Время... .Net требуется для загрузки данных в память
- Время, которое требуется вашему коду, чтобы что-то с ним сделать.
Профилирование каждого из них по отдельности даст вам лучшее представление о том, где находится узкое место. Для профилирования вашего кода есть отличная статья от Microsoft
Кэшировать
Чтобы повысить производительность, нужно обратить внимание на то, если вам нужно каждый раз загружать все эти данные. Можно ли кэшировать список (или его часть)? Взгляните на новую System.Runtime. Кэширование пространства имен.
Переписать как T-SQL
Если вы выполняете исключительно операции с данными (как предполагает ваш вопрос), вы можете переписать свой код, который использует данные, чтобы быть T-SQL и работать изначально на SQL. Это может быть намного быстрее, так как вы будете работать с данными напрямую, а не перемещать их.
Если в вашем коде много необходимой процедурной логики, вы можете попробовать смешать T-SQL с Интеграция с CLR дает вам преимущества обоих миров.
Это во многом сводится к сложности (или более процедурному характеру) вашей логики.
Если ничего не помогает
Если все области оптимальны (или близки к ним), а ваш дизайн безупречен. Я бы даже не стал заниматься микрооптимизацией, я бы просто добавьте к этому оборудование.
Какое оборудование? Воспользуйтесь монитором надежности и производительности, чтобы узнать, где горлышко бутылки есть. Наиболее вероятное место описанной вами проблемы HDD или RAM.
person
badbod99
schedule
16.09.2010