| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
PREPARE´Â ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÁغñµÈ ¹®ÀåÀº ¼º´ÉÀ» ÃÖÀûÈÇϱâ À§Çؼ ÀÌ¿ë °¡´ÉÇÑ ¼¹öÃø ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù. PREPARE¹®À» ½ÇÇàÇÒ ¶§, ÁöÁ¤µÈ ¸í·É¹®Àº ±¸¹® ºÐ¼®, Àç¾²±â¿Í °èȹµÇ¾î Áý´Ï´Ù. ±× ÈÄ,EXECUTE¸í·É¹®Àº ÀÌ¾î¼ ¹ßÇàµÇ¾úÀ» ¶§´Â, ÁغñµÈ ¹®Àå¿¡ ÇÊ¿äÇÑ Ã³¸®´Â ½ÇÇà¿¡¸¸ µË´Ï´Ù. ¸Å¹ø ¸í·ÉÀÌ ½ÇÇàµÇ´Â ´ë½Å¿¡ ±¸¹® ºÐ¼®, Àç¾²±â, ½ÇÇà °èȹÀÇ ÀÛ¼º ´Ü°è¿¡¼ ¿ÀÁ÷ Çѹø ¼öÇàµË´Ï´Ù.
ÁغñµÈ ¹®ÀåÀº ¸Å°³º¯¼ö, Áï ¹®ÀåÀÌ ½ÇÇàµÉ ¶§¿¡ ´ëÀԵǴ °ªÀ» ¹ÞÀ» ¼ö°¡ ÀÖ½À´Ï´Ù. ÁغñµÈ ¸í·É¹®À» ÀÛ¼ºÇÒ ¶§¿¡´Â$1À̳ª$2µîÀ» »ç¿ëÇØ, À§Ä¡¿¡ ÀÇÇØ ¸Å°³º¯¼ö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. ´ëÀÀÇÏ´Â ÆÄ¶ó¹ÌÅÍÀÇ µ¥ÀÌÅÍÇüÀÇ ¸®½ºÆ®´Â ¼±ÅÃÀûÀ¸·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÇ ÁöÁ¤ÀÌ ¾ø°Å³ª ¶Ç´Â,unknown¶ó°í ¼±¾ðµÇ°í ÀÖ´Â °æ¿ì, ±× ÇüÅ´ ¸Å°³º¯¼ö°¡ »ç¿ëµÇ´Â ¹®¸Æº¸´Ù(°¡´ÉÇϸé) ÃßÃøµË´Ï´Ù. ¸í·É¹®ÀÇ ½ÇÇà½Ã¿¡´Â EXECUTE¸í·É¹®³»¿¡ ÀÌ·¯ÇÑ ¸Å°³º¯¼öÀÇ ½ÇÁ¦ÀÇ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº EXECUTE À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
ÁغñµÈ ¸í·É¹®Àº ÇöÀçÀÇ µ¥ÀÌÅͺ£À̽º ¼¼¼ÇÀÇ ±â°£Áß¿¡°Ô¸¸ º¸°ü À¯ÁöµË´Ï´Ù. ¼¼¼ÇÀÌ Á¾·áÇϸé ÁغñµÈ ¸í·É¹®Àº ÆÄ±âµË´Ï´Ù. ±× ¶§¹®¿¡, ´Ù½Ã ÀÌ¿ëÇÏ´Â °æ¿ì´Â ÀçÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, À̰ÍÀº, 1°³ÀÇ ÁغñµÈ ¹®ÀåÀ» º¹¼öÀÇ µ¥ÀÌÅͺ£À̽º Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ »ç¿ëÇÒ ¼ö ¾ø´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ´Ù¸¸, °¢ Ŭ¶óÀÌ¾ðÆ®°¡ °³º°ÀûÀ¸·Î ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁغñµÈ ¸í·É¹®À» ¼öÀÛ¾÷À¸·Î »èÁ¦ÇÏ·Á¸é DEALLOCATE ¸í·É¹®À» »ç¿ëÇÕ´Ï´Ù.
ÁغñµÈ ¹®ÀåÀÇ ÀÌÁ¡À» ÃÖ´ëÇÑÀ¸·Î ¹ßÈÖÇÒ ¼ö ÀÖ´Â °ÍÀº, ´ÜÀÏÀÇ ºñ½ÁÇÑ ¸í·É¹®ÀÇ ¸¹ÀÌ ´Ù¼ö ½ÇÇàÇÏ´Â °æ¿ìÀÔ´Ï´Ù. ÆÛÆ÷¸Õ½ºÀÇ Â÷ÀÌ´Â, ¹®ÀåÀÇ °³¼³ª ½ÇÇà °èȹÀÌ º¹ÀâÇÒ ¸¸Å ÇöÀúÇÏ°Ô µÇ°ÚÁö¿ä. ¿¹¸¦ µé¸é, ¸¸¾à ±× Äû¸®¹®Àº ´Ù¼öÀÇ Å×À̺íÀÇ °áÇÕÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì³ª ¸î¸îÀÇ ·êÀ» Àû¿ëÇØ¾ß ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¿ä±¸¸¦ »ý°¢µË´Ï´Ù. ¸¸¾à ±× ¸í·É¹®Àº »ó´ëÀûÀ¸·Î ½ÇÇà °èȹ°ú Àç¾²±â°¡ ºñ±³Àû ´Ü¼øÇÕ´Ï´Ù. ±×·¯³ª ºñ±³ÀûÀ¸·Î ½ÇÇà ÄÚ½ºÆ®°¡ ºñ½Ò °æ¿ì, ±× ÆÛÆ÷¸Õ½º´Â ÁغñµÈ ¹®ÀåÀÇ È¿°ú´Â ±×¸¸Å ³ªÅ¸³ªÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
°³°³ÀÇ ÁغñµÈ ¹®Àå¿¡°Ô ÁÙ ¼ö ÀÖ´Â ÀÓÀÇÀÇ À̸§ÀÔ´Ï´Ù. ÀÌ À̸§Àº 1°³ÀÇ ¼¼¼Ç³»¿¡¼ À¯ÀÏÇÑ °ÍÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌÀüÀÇ ÁغñµÈ ¸í·É¹®ÀÇ ½ÇÇà ¹× »èÁ¦¶§¿¡ ÀÌ À̸§ÀÌ »ç¿ëµË´Ï´Ù.
ÁغñµÈ ¸í·É¹®¿¡ ´ëÇÑ ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÔ´Ï´Ù. ƯÁ¤ÀÇ ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÇ ÁöÁ¤ÀÌ ¾ÈµÇ°Å³ª ¶Ç´Â unknown¿Í ÁöÁ¤µÇ¾úÀ» °æ¿ì, ¸Å°³º¯¼ö°¡ »ç¿ëµÇ´Â ¹®¸ÆÀ¸·ÎºÎÅÍ ÃßÃøµË´Ï´Ù. ÁغñµÈ ¸í·É¹® ¾È¿¡¼ ÀÌ ¸Å°³º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§´Â $1,$2µîÀ» »ç¿ëÇÕ´Ï´Ù.
¾î´À SELECT ,INSERT, UPDATE, DELETE, VALUES¸í·É¹® ÀÔ´Ï´Ù.
»óȲ¿¡ µû¶ó¼´Â, ÁغñµÈ ¸í·É¹®À¸·Î »ý¼ºµÈ ¹®ÀÇ °èȹÀÌ, º¸ÅëÀ¸·Î ¼Û½ÅµÇ°í ½ÇÇàµÇ¾úÀ» °æ¿ìÀÇ ¹®ÀÇ °èȹº¸´Ù µÚ¶³¾îÁ® ¹ö¸®´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº ½ÇÇà °èȹÀ» ÀÛ¼ºÇÒ ¶§, planner°¡ ÃÖÀûÀÎ ¸í·É¹®ÀÇ °èȹÀ» ÆÇ´ÜÇϱâ À§Çؼ ¹®Àå ¾È¿¡¼ ÁöÁ¤µÈ ¸Å°³º¯¼öÀÇ ½ÇÁ¦ÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ¾ø´Â °ÍÀÌ ¿øÀÎÀÔ´Ï´Ù. PostgreSQL¿¡¼´Â Å×ÀÌºí³»ÀÇ µ¥ÀÌÅÍ ºÐÆ÷¿¡ °üÇÑ Åë°è¸¦ ³», ¹®ÁßÀÇ Á¤¼ö¸¦ »ç¿ëÇØ ¹®ÀÇÀÇ ½ÇÇà °á°ú¸¦ ¿¹ÃøÇϰí ÀÖ½À´Ï´Ù. ¸Å°³º¯¼ö¸¦ °¡Áú ÁغñµÈ ¹®ÀåÀÇ ½ÇÇà °èȹÀ» ÀÛ¼ºÇÏ´Â °æ¿ì´Â, ÀÌ·¯ÇÑ µ¥ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡, ¼±ÅÃµÈ °èȹÀÌ ÃÖÀûÀÌÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. PostgreSQL°¡ ÁغñµÈ ¸í·É¹®À» À§ÇØ ¼±ÅõǾî Áö¸é EXPLAIN ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.
Äõ¸® ½ÇÇà °èȹÀ̰ú PostgreSQL°¡ ¼öÁýÇÏ´Â Åë°è¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀº ANALYZE ÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
pg_prepared_statements ½Ã½ºÅۺ並 Äõ¸®¿¡ ÀÇÇØ ¼¼¼ÇÀ¸·Î ÀÌ¿ë °¡´ÉÇÑ ÁغñµÈ ¹®ÀåÀ» ¸ðµÎ È®ÀÎÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
INSERT¸í·É¹®¿¡ ´ëÇØ¼ ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇØ, ½ÇÇàÇÕ´Ï´Ù.
PREPARE fooplan (int, text, bool, numeric) AS
INSERT INTO foo VALUES($1, $2, $3, $4);
EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);
SELECT¹®¿¡ ´ëÇØ¼ ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇØ, ½ÇÇàÇÕ´Ï´Ù.
PREPARE usrrptplan (int) AS
SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid
AND l.date = $2;
EXECUTE usrrptplan(1, current_date);
Á¦2 ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº °Í¿¡ ÁÖ¸ñÇØ ÁÖ¼¼¿ä. ÀÌ ¶§¹®¿¡$2°¡ »ç¿ëµÇ´Â ¹®¸ÆÀ¸·ÎºÎÅÍ µ¥ÀÌÅÍÇüÀÌ ÃßÃøµË´Ï´Ù.