Проект представляет собой веб-приложение на ASP / VB.net. Проблема заключается в том, что некоторые страницы являются невероятно медленными. После попытки найти узкое место было обнаружено, что это метод загрузки при заполнении таблицы данными с результатами запроса.
Мы используем базу данных Oracle, и запросы выполняются в хранимых процедурах. В качестве примера, у нас есть относительно простой оператор выбора в процедуре, который возвращает 2 столбца с 6 строками, для выполнения которых было определено, что это займет около 0,015 секунд. Однако загрузка OracleDataReader в таблицу данных занимает в среднем 7 секунд - смешное количество времени для такого небольшого набора записей. После того, как я возился с запросом, я обнаружил, что проблема возникает из-за простого оператора декодирования. Оператор декодирования используется следующим образом:
WHERE
ДЕКОД (iBln, 1, столбец 1, столбец 2) МЕЖДУ iDate1 и iDate2
Переменная iBln - это просто число, передаваемое в качестве логической переменной для определения, какой столбец должен находиться между двумя датами. Если я закомментирую этот оператор декодирования и сделаю его просто «column1 BETWEEN iDate1 и iDate2», то метод загрузки вообще не займет время, как и должно быть, что означает, что это действительно оператор декодирования, вызывающий проблемы.
Так что я просто надеюсь услышать от кого-нибудь, кто мог бы иметь представление о том, что является причиной этого или как это исправить. Это простое декодирование, как оно вообще влияет на метод загрузки?