2012-02-17 1 views
0

У меня есть функция, которая создает инструкцию SELECT с предложением WHERE. Затем эта функция вызывается несколько раз (предложение WHERE будет отличаться каждый раз). У меня есть две версии этой функции. Один открывает набор записей, а затем выполняет итерацию каждой строки с помощью MoveNext и заполняет некоторые переменные из каждой строки. Другая версия открывает набор записей, а затем вызывает GetRows для заполнения массива. Используя первую версию, мое приложение занимает 9 секунд, но с версией GetRows требуется 79 секунд. Я читал, что GetRows более эффективен. Разве это не так?ADO GetRows медленнее, чем GetFields и MoveNext

+0

Трудно сказать, не видя свой код. Похоже, вы делаете то, чего не должны делать в версии GetRows. Возможно, вы можете опубликовать код? –

ответ

1

он эффективнее, если у вас не хватает памяти (т. Е. Если вы уже в свободной памяти, и мы говорим о большой таблице, то получение их в памяти может привести к приложение запускает paging на диск, в то время как другой подход не потому, что он получает несколько за раз).

Почему бы не написать оскорбительный код, чтобы узнать, есть ли что-то еще, что вызывает проблему?