Parse to execute ratio необоснованно 100%

Sergey Molchanov
Дата: 05.12.2005 16:46:05
Возник такой вопрос:
Соединяюсь с базой Oracle
(пробовал как классы System.Data.OracleClient, так и Oracle.DataAccess из ODP.NET)
Создаю OracleCommand с текстом INSERT INTO какая_то таблица VALUES (:par1, :par2, ..., :parN)
То есть запрос параметризованный.
Создаю параметры, присваиваю им значения, и в цикле 10000 раз выполняю ExecuteNonQuery.
Почему-то оракл каждый раз заново парсит текст запроса, хотя он абсолютно не меняется.
Если кто-то что-то про это знает, буду ему ужасно благодарен :)
Sergey Molchanov
Дата: 06.12.2005 13:50:25
Отвечаю сам себе:
Удалось побороть тормоза другим способом, используя свойство ArrayBindCount класса Oracle.DataAccess.Client.OracleCommand (из ODP.NET) и задавая значения параметров массивами.

P.S. Несмотря на найденное решение проблемы тормозов, все равно мне не понравилось, что оракл парсит запрос каждый раз при выполнении. Что за отстой?
Shultze
Дата: 14.12.2005 15:58:38
Провайдеры отстойные. Попробуй провайдера от Oracle или то CrLab
http://www.crlab.com/products-adonet.html
Sergey Molchanov
Дата: 15.12.2005 14:07:48
Shultze
Провайдеры отстойные. Попробуй провайдера от Oracle

Дык я провайдера от Оракла и использую (см. выше, упомянут Oracle.DataAccess из ODP.NET).
А CrLab не очень хочется юзать - еще третьего производителя к продукту приплетать...