Итак, я читаю руководство для новичков Иана Абрамсона для Oracle Database 10g (исходя из использования mysql), и он упоминает PL/SQL и дает все эти большие причины для его использования, однако я делаю это в подготовка к переработке нескольких приложений, используемых моей компанией.Являются ли операции таблицы в PLSQL более эффективными, чем запуск их во внешнем приложении? (Oracle 10g)
Мой программист головы утверждает, что если PL/SQL не эффективнее при доступе к базе данных, все разбор и запросы должны выполняться на клиентских программах для распространения нагрузки с сервера Oracle. Я утверждаю, что мы должны разделить наш код и попытаться избежать дублирования кода, и PL/SQL может помочь нам в этом.
Проблема в том, что мы на самом деле не знаем (и эта книга не говорит нам), насколько эффективный доступ к базе данных в PL/SQL над приложением, запущенным на другой машине, которая делает 3-5 (довольно большой) запросов на операцию. Я думаю, что с большей вероятностью будет работать быстрее, потому что (по моему знанию) функции pl/sql сохраняют и сохраняют свои планы выполнения, а традиционные сетевые накладные расходы будут сокращены в 3-5 раз (в зависимости от количества запросов)
Я знаю, что я, вероятно, прошу высказать больше мнения здесь, но если бы я работал с таким запросом, как «Get A, если A.property, получите B, если B.Property, получите C ..» (Фактически это рекурсивные операции в одной таблице, большинство уровней рекурсии, которые я видел, это 5, но это не значит, что она не может быть бесконечной), было бы лучше работать в pl/sql как можно больше из-за уменьшенных планов выполнения времени/кэширования в оба конца, или если избыточные проверки будут лучше размещены в приложении на стороне клиента? – Sidney
Не уверен, что вы получаете, поскольку «получить a, если a.property, получить b, если b.property ...» на самом деле не является SQL-запросом. Кроме того, не уверен, что вы подразумеваете под «чрезмерными проверками» ...? –
Ах, извините, я пытался сварить избыточный процесс. У нас есть таблица с рекурсивными индексами. Например, логическая структура в клиентской стороне - это что-то вроде «While (A.next is not 0) извлечь B из базы данных, установить A равным B». Существуют повторные проверки, чтобы увидеть, что A.next равно 0, и повторные запросы, чтобы получить B из базы данных. Мне интересно, не будет ли такая логика лучше реализована в PL/SQL. – Sidney