PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо PostgreSQL третира моята заявка по различен начин във функция?

Актуализация в PostgreSQL 9.2

Имаше значително подобрение, цитирам бележките по изданието тук :

Оригинален отговор за PostgreSQL 9.1 или по-стара версия

Функциите plpgsql имат подобен ефект като PREPARE оператор:заявките се анализират и планът на заявката се кешира.

Предимството е, че се спестява известно натоварване за всяко повикване.
Недостатъкът е, че планът на заявката не е оптимизиран за конкретните стойности на параметрите, с които се извиква.

За заявки към таблици с равномерно разпределение на данни, това обикновено няма да е проблем и PL/pgSQL функциите ще работят малко по-бързо от необработените SQL заявки или SQL функции. Но ако вашата заявка може да използва определени индекси в зависимост от действителните стойности в WHERE клауза или, по-общо, изберете по-добър план за заявка за конкретните стойности, може да се окажете с неоптимален план за заявка. Опитайте SQL функция или използвайте динамичен SQL с от ръководството за да подкрепя горните си твърдения:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оператор ALL в клауза WHERE в Rails

  2. Урок за PostgreSQL за начинаещи – всичко, което трябва да знаете за PostgreSQL

  3. Как да създадете еквивалент на колона за идентичност на SQL Server в Postgres

  4. Брой редове на Psycopg2 за курсор от страна на сървъра

  5. Postgres намира конфигурационни файлове в linux