|
![]() |
#1 |
Участник
|
Vadik
Как Вы получили эти числа в профайлере? У меня как я ни кручу профайлер ничего подобного не наблюдается (Axapta 2.5). В профайлере я вижу только дерево вызовов. Т.е. сколько времени на какую строку ушло. Если судить по времени обработке строк, получается, что Statment фетчит по одной записи, а While Select по 24 за раз. НО! Если просуммировать время фетча для 24 строк Statmenta и сравнить с временем фетча для одной строки While Select, то я получаю примерно одинаковое значение. Принципиальное расхождение по времени наблюдается именно на команде записи в текстовый файл! В моем случае на 2 порядка. Опять же, судя по плану выполнения запроса в профайлере индексы используются в обеих случаях. Точнее используется кластерный индекс. Собственно, этого и следовало ожидать. Здесь же идет голое сканирование строк в соответствии именно с кластерным индексом. И еще, опять же судя по результатам профайлера, почему-то при выполнении Statment наблюдается повышенный обмен данными с сервером. У меня получились такие данные (только собственно цикл While): Satment Вызовов от клиента к серверу 0 Байт, от клиента к серверу 571969 Вызовов от сервера к клиенту 21001 Байт, от сервера к клиенту 1040040 While Select Вызовов от клиента к серверу 0 Байт, от клиента к серверу 425451 Вызовов от сервера к клиенту 41 Байт, от сервера к клиенту 1435 Т.е. каким-то образом оптимизируется объем передаваемой информации. Единственная причина, которая приходит в голову - это информация о типах данных. О типах данных "родной" таблицы и так все известно, а вот о типах Satament - ничего не ясно. Хотя тут я не уверен. |
|
Теги |
connection, profiler, sql, statement, полезное, производительность, профайлер |
|
|