| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 17. ¼¹öÀÇ ¼³Á¤ | Fast Forward | Next |
ÀÌ·¯ÇÑ ¼³Á¤ ¸Å°³º¯¼ö´Â, ¹®ÀÇ ÃÖÀûȰ¡ ¼±ÅÃÇÏ´Â ¹®ÀÇ °èȹ¿¡ ¿µÇâÀ» ÁÖ´Â ´ë·«ÀûÀÎ ¼ö¹ýÀ» Á¦°øÇÕ´Ï´Ù. ¾î´À ¹®ÀÇ¿¡ ´ëÇØ¼ ÃÖÀûȰ¡ ¼±ÅÃÇÑ µðÆúÆ® °èȹÀÌ ÃÖÀûÀÌÁö ¾ÊÀº °æ¿ì, ÀáÁ¤ÀûÀÎ ÇØ°áÃ¥Àº, ÀÌ·¯ÇÑ ¼³Á¤ ¸Å°³º¯¼öÀÇ Çϳª¸¦ »ç¿ëÇØ, ÃÖÀûÈ¿¡ ´Ù¸¥ °èȹÀ» ¼±ÅÃÇϵµ·Ï ´ëÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª, ¿µ±¸ÀûÀ¸·Î ÀÌ·¯ÇÑ ¼³Á¤À» ¹«È¿·Î ÇÏ´Â °ÍÀº ±×´ÙÁö ±ÇÀ¯¹ÞÁö ¾Ê½À´Ï´Ù. ǰÁúÀ» °³¼±ÇÏ´Â ¹æÃ¥Àº, ´ÙÀ½°ú °°ÀÌ ÇÏ¿© ÃÖÀûȰ¡ ¼±ÅÃÇÒ °èȹÀÇ Ç°ÁúÀ» Çâ»óÇÏ´Â °ÍÀÔ´Ï´Ù. planner ÄÚ½ºÆ® »ó¼ö (À»)¸¦ Á¶ÀýÇØ, ANALYZE ¸¦ º¸´Ù ºó¹øÇÏ°Ô ½ÇÇàÇØ,default_statistics_target¼³Á¤ ¸Å°³º¯¼öÀÇ °ªÀ» Å©°Ô ÇÕ´Ï´Ù, ±×¸®°íALTER TABLE SET STATISTICS¸¦ »ç¿ëÇØ, ƯÁ¤ÀÇ ¿¿¡ ´ëÇØ¼ ¼öÁýµÈ Åë°è Á¤º¸¸¦ ´Ã¸³´Ï´Ù.
¹®ÀÇ planner°¡ ºñÆ® ¸Ê ½ºÄµ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ ÇØ½Ã µÈ Áý°è °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ ÇØ½Ã °áÇÕ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ À妽º ÁÖ»ç °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ ¸ÓÁö °áÇÕ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ nested ·çÇÁ °áÇÕ °èȹÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. nested ·çÇÁ °áÇÕÀ» ¿ÏÀüÇÏ°Ô ±ÝÁöÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù¸¸, ÀÌ º¯¼ö¸¦ ¿ÀÇÁ·Î Çϸé, ¸¸¾à ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é, planner´Â ±× »ç¿ëÀ» ½Ç½ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ ½ÃÄö¼È ½ºÄµ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. ½ÃÄö¼È Áֻ縦 ¿ÏÀüÇÏ°Ô ±ÝÁöÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù¸¸, ÀÌ º¯¼ö¸¦ ¿ÀÇÁ·Î Çϸé, ¸¸¾à ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é, planner´Â ±× »ç¿ëÀ» ½Ç½ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡ ¸í½ÃÀû Á¤·Ä ´Ü°è¸¦ »ç¿ëÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. ¸í½ÃÀû Á¤·ÄÀ» ¹Ù²Ù°í¸¦ ¿ÏÀüÇÏ°Ô ±ÝÁöÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù¸¸, ÀÌ º¯¼ö¸¦ ¿ÀÇÁ·Î Çϸé, ¸¸¾à ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é, planner´Â ±× »ç¿ëÀ» ½Ç½ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
¹®ÀÇ planner°¡TIDÁÖ»ç °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.
º»Àý·Î Ãë±ÞÇÏ´ÂÄÚ½ºÆ®º¯¼ö´Â, ÀÓÀÇÀÇ Ã´µµ·Î ÃøÁ¤µË´Ï´Ù. À̰͵éÀº »ó´ëÀûÀÎ °ª ¹Û¿¡ ¾ø½À´Ï´Ù. ±× ¶§¹®¿¡, °°Àº ÀÎÀڷΠôµµ¸¦ ¹Ù²Ù¾îµµ, plannerÀÇ ¼±ÅÃÀº °á°úÀûÀ¸·Î ¹Ù²îÁö ¾Ê½À´Ï´Ù. ÀüÅëÀûÀ¸·Î, ÀÌ·¯ÇÑ º¯¼ö´Â ÄÚ½ºÆ® ´ÜÀ§·Î¼ ½ÃÄö¼ÈÀÎ ÆäÀÌÁö È¥ÀâÀ» ÂüÁ¶Çϰí ÀÖ¾ú½À´Ï´Ù. Áï,seq_page_cost¸¦ °ü½ÀÀûÀ¸·Î1.0À¸·Î ÇØ, ´Ù¸¥ ÄÚ½ºÆ® º¯¼ö¸¦ ±×°ÍÀ» Âü°í(?¼³Á¤µÇ¾î ÀÖ¾ú½À´Ï´Ù. ±×·¯³ª ¿øÇÑ´Ù¸é, ƯÁ¤ÀÇ ¸Ó½Å¿¡ ÀÖ¾î¼ÀÇ ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§ÀÇ ½ÇÇà ½Ã°£ µî, ´Ù¸¥ ôµµ¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
Note: À¯°¨½º·´Áö¸¸, ÄÚ½ºÆ® º¯¼ö¿¡ ´ëÇÑ ÀÌ»óÀûÀÎ °ªÀ» °áÁ¤ÇÏ´Â, ´É¼÷ÇÏ°Ô Á¤ÀÇµÈ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù. ƯÁ¤ÀÇ ¼³Ä¡°¡ ½Ç½ÃµÇ´Â ¹®ÀÇ Àüü¸¦ È¥Àç½ÃŲ °ÍÀÇ Æò±ÕÀ» ÃÖ¼±ÀÇ °ÍÀ¸·Î ´Ù·ç¾îÁö°í ÀÖ½À´Ï´Ù. ¸îÂ÷·ÊÀÇ ½ÇÇ踸À» ±Ù°Å·Î ÀÌ °ªÀ» º¯°æÇÏ´Â °ÍÀº À§ÇèÇÏ´Ù¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.
½ÃÄö¼ÈÀÎ ÀÏ·ÃÀÇ ÃëµæÀÇ ÀϺΰ¡ µÇ´Â, µð½ºÅ© ÆäÀÌÁö ÆÐÄ¡¿¡ °üÇÑ, plannerÀÇ ÃßÁ¤ ÄÚ½ºÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 1.0ÀÔ´Ï´Ù.
ºñ¼ø¼ÀûÀ¸·Î ²¨³»Áö´Â µð½ºÅ© ÆäÀÌÁöÀÇ ÄÚ½ºÆ®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 4ÀÔ´Ï´Ù. ÀÌ °ªÀ»seq_page_cost¿¡ »ó´ëÀûÀ¸·Î °¨¼Ò½Ã۸é, ½Ã½ºÅÛÀº À妽º ½ºÄµÀ» ±â²¨ÀÌ »ç¿ëÇÏ°Ô µË´Ï´Ù. Áõ°¡½Ã۸é, À妽º ½ºÄµÀÌ »ó´ëÀûÀ¸·Î °í°¡·Î µË´Ï´Ù. ¾çÂÊ ¸ðµÎÀÇ °ªÀ» Áõ°¨½ÃŰ´Â °ÍÀ¸·Î, CPU ÄÚ½ºÆ®¿¡ ´ëÇÑ µð½ºÅ© I/OÀÇ Á߿伺À» º¯°æ½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù. À̰Ϳ¡ ´ëÇØ¼´Â, ÈļúÀÇ ¸Å°³º¯¼ö·Î ¼³¸íÇÕ´Ï´Ù.
Tip: ½Ã½ºÅÛÀºrandom_page_cost¸¦seq_page_costº¸´Ù ÀÛÀº °ªÀ¸·Î ¼³Á¤ÇÏ·Á°í ÇÕ´Ï´Ù¸¸, À̰Ϳ¡´Â ¹°¸®ÀûÀÎ Àǹ̴ ¾ø½À´Ï´Ù. ±×·¯³ª, µ¥ÀÌÅͺ£À̽º°¡ ¿ÏÀüÇÏ°Ô RAM¿¡ ij½ÃµÇ´Â °æ¿ì, °°Àº °ªÀ¸·Î ¼³Á¤ÇÏ´Â °ÍÀº Àǹ̸¦ °¡Áý´Ï´Ù. ÀÌ °æ¿ì, ¼ø¼ ´ë·Î°¡ ¾Æ´Ñ ÆäÀÌÁö ¾×¼¼½º¿¡ ´ëÇÑ ÆÐ³ÎƼ°¡ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¶Ç, ´ëºÎºÐÀÌ Ä³½ÃµÇ´Â µ¥ÀÌÅͺ£À̽º¿¡¼´Â, CPU ¸Å°³º¯¼ö¿¡ ´ëÇØ¼ ¾çÂÊ °ªÀ» ÀÛ°Ô ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. RAM³»¿¡ Á¸ÀçÇÏ´Â ÆäÀÌÁöÀÇ ²¨³½ ÄÚ½ºÆ®´Â Åë»óº¸´Ù ÈξÀ À۱⠶§¹®ÀÔ´Ï´Ù.
¹®Àǰ£¿¡ °¢°¢ÀÇ ÇàÀÇ Ã³¸®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 0.01ÀÔ´Ï´Ù.
À妽º ½ºÄµ°£¿¡ °¢°¢ÀÇ À妽ºÇàÀÇ Ã³¸®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 0.005ÀÔ´Ï´Ù.
¹®Àǽÿ¡ ½ÇÇàµÇ´Â °¢ ¿¬»êÀÚ³ª ÇÔ¼öÀÇ Ã³¸® ÄÚ½ºÆ®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 0.0025ÀÔ´Ï´Ù.
´ÜÀÏÀÇ ¹®ÀÇ·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Â µð½ºÅ© ij½Ã ÇÁ·Î±×·¥ÀÇ ½ÇÈ¿ ¿ë·®¿¡ °üÇÑ plannerÀÇ °¡Á¤À» ¼³Á¤ÇÕ´Ï´Ù. À̰ÍÀº, À妽º¸¦ »ç¿ëÇÏ´Â ÄÚ½ºÆ® ÃßÁ¤Ä¡ÀÇ ¿ä¼Ò°¡ µË´Ï´Ù. º¸´Ù ºñ½Ñ °ªÀ¸·Î Çϸé, º¸´Ù ¸¹Àº À妽º ½ºÄµÀÌ »ç¿ëµÇ°Ô µÇ¾î, º¸´Ù ÀÛ°Ô ¼³Á¤Çϸé, ½ÃÄö¼È ½ºÄµÀÌ Á»´õ »ç¿ëµÇ°Ô µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇÒ ¶§¿¡´Â,PostgreSQLÀÇ °øÀ¯ ¹öÆÛ¿ÍPostgreSQLµ¥ÀÌÅÍ ÆÄÀÏ¿¡ »ç¿ëµÇ´Â Ä¿³ÚÀÇ µð½ºÅ© ij½Ã ÇÁ·Î±×·¥ÀÇ ¾çÀÇ ¾çÂÊ ¸ðµÎ¸¦ °í·ÁÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¶Ç, ÀÌ¿ë °¡´ÉÇÑ ¿µ¿ªÀ» °øÀ¯Çϱ⠶§¹®¿¡, ´Ù¸¥ Å×ÀÌºí¿¡ ´ëÇØ¼ µ¿½Ã¿¡ ½ÇÇàµÇ´Â ¹®ÀÇÀÇ ¿¹»óµÇ´Â ÃÑÁ¤¼öµµ °í·ÁÇØ ÁÖ¼¼¿ä. ÀÌ ¸Å°³º¯¼ö´Â,PostgreSQL·Î ÇÒ´çÇÒ ¼ö ÀÖ´Â °øÀ¯ ¸Þ¸ð¸®ÀÇ Å©±â¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¶Ç, Ä¿³ÚÀÇ µð½ºÅ© ij½Ã ÇÁ·Î±×·¥À» ¿¹¾àÇÏÁöµµ ¾Ê½À´Ï´Ù. À̰ÍÀº ÃßÁ¤ ¸ñÀû¸¸À¸·Î »ç¿ëµË´Ï´Ù. µðÆúÆ®´Â 128 ¸Þ°¡¹ÙÀÌÆ®(128MB)ÀÔ´Ï´Ù.
exhaustive°Ë»öÀ» ½Ç½ÃÇÏÁö ¾Ê°í ¹®ÀÇ °èȹÀ» ½ÃµµÇÏ´Â ¾Ë°í¸®ÁòÀÎ, À¯ÀüÀû ¹®ÀÇ ÃÖÀûȸ¦ À¯È¿ ¶Ç´Â ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´Â ¿ÂÀÔ´Ï´Ù. geqo_thresholdº¯¼ö´Â, ¾î´À ¹®ÀÇÀÇ Å¬·¡½º¿¡ ´ëÇØ, GEQO¸¦ ¹«È¿·Î ÇÏ´Â °Íº¸´Ù Ä¡¹ÐÇÑ ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.
Àû¾îµµ À̸¸ÅÀÇ ¼öÀÇFROMÇ׸ñ¼ö·Î ¹®ÀǸ¦ °èȹÇϴµ¥ À¯ÀüÀû ¹®ÀÇ ÃÖÀûȸ¦ »ç¿ëÇÕ´Ï´Ù. (FULL OUTER JOINÀÇ »ý¼ºÀÚ´Â, 1°³ÀÇFROMÇ׸ñÀ¸·Î¼ °è»êÇÏ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ) µðÆúÆ®´Â 12ÀÔ´Ï´Ù. Á» ´õ ´Ü¼øÇÑ ¹®ÀÇ¿¡¼´Â, °áÁ¤·ÐÀû, exhaustive planner¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÃÖ¼±ÀÔ´Ï´Ù¸¸, ¸¹Àº Å×À̺íÀ» °¡Áö´Â ¹®ÀÇ¿¡¼´Â, °áÁ¤·ÐÀû planner´Â ¸Å¿ì ½Ã°£ÀÌ °É¸³´Ï´Ù.
GEQO¿¡ ÀÖ¾î¼ÀÇ °èȹ ½Ã°£°ú ¹®ÀÇ °èȹÀÇ È¿À²¼ºÀÇ »çÀÌÀÇ Æ®·¹ÀÌµå ¿ÀÇÁ¸¦ Á¦¾îÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â 1¿¡¼ 10±îÁöÀÇ ¹üÀ§ÀÇ Á¤¼ö°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. µðÆúÆ®ÀÇ °ªÀº 5ÀÔ´Ï´Ù. °ªÀ» Å©°Ô Çϸé, ¹®ÀÇ °èȹ ÀÛ¼º¿¡ ÀÇÇØ ¸¹Àº ½Ã°£À» ¼ÒºñÇÑ °ÍÀÌ µË´Ï´Ù¸¸, º¸´Ù È¿À²ÀûÀÎ ¹®ÀÇ °èȹÀÌ ¼±ÅÃµÉ °¡´É¼ºÀÌ Áõ°¡ÇÕ´Ï´Ù.
½ÇÁ¦geqo_effort´Â Á÷Á¢ ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. ±×°ÍÀº GEQOÀÇ Çൿ¿¡ ¿µÇâÀ» ÁÖ´Â ´Ù¸¥ º¯¼ö¿¡ ´ëÇØ, µðÆúÆ®ÀÇ °ªÀ» °è»êÇϱâ À§Çؼ¸¸ »ç¿ëµË´Ï´Ù(ÀÌÇÏ¿¡¼ ¼³¸íÇÕ´Ï´Ù). ¿øÇÏ´Â °æ¿ì, ¼öÀÛ¾÷ ´ë½Å¿¡, ´Ù¸¥ ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
GEQO·Î »ç¿ëµÇ´Â Ç® ¿ë·®À» °ü¸®ÇÕ´Ï´Ù. Ç® ¿ë·®°ú´Â À¯ÀüÀû ¸ðÁý´Ü³»ÀÇ °³Ã¼¼öÀÔ´Ï´Ù. Àû¾îµµ 2°³ À̾î¾ß Çϸç, 100¿¡¼ 1000±îÁöÀÇ °ªÀÌ »ç¿ëµË´Ï´Ù. ¸¸¾à(µðÆúÆ®ÀÇ ¼³Á¤ÀÌ´Ù) ¿µÀ¸·Î ¼³Á¤µÇ¸é,geqo_effort¹× ¹®ÀÇ ¾ÈÀÇ Å×À̺í¼ö¿¡ ±Ù°ÅÇØ, ÀûÀýÇÑ µðÆúÆ®°¡ ¼±Åõ˴ϴÙ.
GEQO·Î »ç¿ëµÇ´Â ¼¼´ëÀÇ ¼ö¸¦ °ü¸®ÇÕ´Ï´Ù. ¼¼´ë´Â ¾Ë°í¸®ÁòÀÇ ¹Ýº¹¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÃÖ¾ÇÀ̾ 1Àº ¾øÀ¸¸é ¾ÈµÇ¾î, Ç® »çÀÌÁî¿Í °°Àº ¹üÀ§ÀÇ °ªÀÌ »ç¿ëµË´Ï´Ù. À̰ÍÀ» 0À¸·Î ¼³Á¤(µðÆúÆ®ÀÇ ¼³Á¤)Çϸé, ÀûÀýÇÑ µðÆúƮġ°¡geqo_effort¿¡ ±Ù°ÅÇØ ¼±Åõ˴ϴÙ.
GEQO·Î »ç¿ëµÇ´Â Ç¥º»¼±Åà ÆíÀÇÀ» °ü¸®ÇÕ´Ï´Ù. Ç¥º»¼±Åà ÆíÀÇ´Â ¸ðÁý´Ü³»ÀÇ ¼±ÅÃÀûÀÎ ¾Ð·ÂÀÔ´Ï´Ù. °ªÀº 1.50¿¡¼ 2.00À¸·Î, 2.00ÀÌ µðÆúÆ®ÀÔ´Ï´Ù.
ALTER TABLE SET STATISTICS·Î ƯÁ¤ÇÑ ¿ÀÇ ´ë»ó ÁýÇÕÀ» ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê¾Ò´ø Å×ÀÌºí¿¿¡ ´ëÇØ, µðÆúÆ®ÀÇ Åë°è ´ë»óÀ» ¼³Á¤ÇÕ´Ï´Ù. º¸´Ù Å« °ªÀºANALYZE¿¡ ÇÊ¿äÇÑ ½Ã°£À» Áõ°¡½Ãŵ´Ï´Ù¸¸, plannerÀÇ ¿¹ÃøÀÇ Ç°ÁúÀ» Çâ»ó½Ãŵ´Ï´Ù. µðÆúÆ®´Â 10ÀÔ´Ï´Ù. PostgreSQLÀÇ ¹®ÀÇ planner¿¡ ÀÇÇÑ Åë°è Á¤º¸ÀÇ »ç¿ë¹ý¿¡ °üÇѺ¸´Ù »ó¼¼ÇÑ Á¤º¸´Â,Section 13.2À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
¹®ÀǸ¦ ÃÖÀûÈÇϱâ À§ÇÑ Å×À̺í Á¦ÇÑÀÇ ¹®ÀÇ plannerÀÇ »ç¿ëÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂoffÀÔ´Ï´Ù.
ÀÌ ¸Å°³º¯¼ö°¡on½Ã¿¡´Â, planner´Â Å×À̺íCHECKÁ¦¾àÀ¸·Î ¹®ÀÇ Á¶°ÇÀ» ºñ±³ÇØ, Á¦¾à°ú ¸ð¼øµÇ´Â Á¶°ÇÀÇ ½ºÄ³´× Å×À̺íÀ» »èÁ¦ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.
CREATE TABLE parent(key integer, ...); CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent); CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent); ... SELECT * FROM parent WHERE key = 2400;
Á¦¾à ¹èÁ¦°¡ À¯È¿Çϰí, ÀÌSELECT´Â ÀüÇôchild1000¸¦ ½ºÄµÇÏÁö ¾Ê½À´Ï´Ù. À̰ÍÀº »ó¼ÓÀÌ ÆÄƼ¼ÇµÈ Å×À̺íÀÇ ÀÛ¼º¿¡ »ç¿ëµÉ ¶§, ¼º´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù.
Çö½ÃÁ¡¿¡¼constraint_exclusionÀÇ µðÆúÆ®´Â ¹«È¿ÀÔ´Ï´Ù. Äõ¸® °èȹÀÌ Ä³½ÃµÇ´Â °æ¿ì, À߸øµÈ °á°ú¸¦ °¡Á®¿Ã À§Ç輺ÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. Å×À̺í Á¦¾àÀÌ º¯°æ ¶Ç´Â »èÁ¦µÇ´Â °æ¿ì, ÀÌÀü¿¡ »ý¼ºµÈ °èȹÀÌ Áö±ÝÀº À߸øµÇ¾úÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ±×¸®°í Àç°èȹÀ» °¿ëÇÏ´Â ³»ÀåµÈ ¸ÅÄ¿´ÏÁòÀÌ ÀÖ½À´Ï´Ù. (ÀÌ °áÇÔÀº, ÇâÈÄ¿¡ PostgreSQL¸±¸®½º¿¡¼ ³íÀÇ µË´Ï´Ù.) ¶Ç ´Ù¸¥ ÀÌÀ¯´Â Á¦¾à °Ë»ç°¡ ºñ±³Àû °í°¡¿©¼, ¸¹Àº °æ¿ì¿¡ ±¸Á¦¸¦ °¡Á®¿ÀÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù ÀÌ ±â´ÉÀÇ ÀåÁ¡À» ÀÌ¿ëÇØ ¼³°èµÈ ¸¸Å ºñÀ² µÈ Å×À̺íÀ» ½ÇÁ¦·Î »ç¿ëÇϰí ÀÖ´Â (ºÐ)Æí ¸¶¼Å, À̰ÍÀ» À¯È¿ÇÏ°Ô ÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù.
Á¦¾à¿¡ ÀÇÇÑ Á¦¿Ü ¹× ÆÄƼ¼Å´×¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀºSection 5.9À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
planner´Â,FROM¸®½ºÆ®°¡ À̵é Ç׸ñº¸´Ù ÀûÀº °á°úÀÇ °æ¿ì, ¼ºêÄõ¸®¸¦ »óÀ§ÀÇ Äõ¸®¿¡ º´ÇÕ ÇÕ´Ï´Ù. º¸´Ù ÀÛÀº °ªÀº °èȹ ½Ã°£À» Ãà¼Ò½Ãŵ´Ï´Ù¸¸, ¿µîÇÑ Äõ¸® °èȹÀ» °¡Á®¿Ã °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. µðÆúÆ®´Â 8ÀÔ´Ï´Ù. Åë»ó À̰ÍÀ»geqo_thresholdÀÌÇÏ·Î ÇØ µÎ¸é ÁÁÀ» °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºSection 13.3À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
ÃÖÁ¾ÀûÀ¸·Î ¸®½ºÆ®°¡ ÀÌ Ç׸ñ¼ö ÀÌÇϰ¡ µÉ ¶§, planner´Â, ¸í½ÃÀûÀÎJOIN±¸¹®(FULL JOIN¸¦ Á¦¿ÜÇÑ´Ù)À»FROMÇ׸ñÀÇ ¸®½ºÆ®·Î ÀçÀÛ¼ºÇÕ´Ï´Ù. ÀÌ °ªÀ» ÀÛ°Ô ÇÏ¸é °èȹ ÀÛ¼º ½Ã°£Àº °¨¼ÒÇÕ´Ï´Ù¸¸, ¿µîÇÑ Äõ¸® °èȹÀÌ ÀÛ¼ºµÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
µðÆúÆ®¿¡¼´Â, ÀÌ °ªÀºfrom_collapse_limit¿Í °°Àº °ªÀ¸·Î ¼³Á¤µÇ¾î ÀÖ¾î ´ëºÎºÐÀÇ °æ¿ì¿¡ ÀûÀýÇÕ´Ï´Ù. À̰ÍÀ» 1·Î ¼³Á¤Çϸé, ¸í½ÃÀûÀÎJOINÀÇ Àç¼ø¼ÇÏ´Â °ÍÀ» ¹æÁö ÇÕ´Ï´Ù. µû¶ó¼, Äõ¸®·Î ÁöÁ¤µÈ ¸í½ÃÀû °áÇÕ ¼ø¼´Â, ¸±·¹À̼ÇÀÌ °áÇյǴ ½ÇÁ¦ÀÇ ¼ø¼°¡ µË´Ï´Ù. Äõ¸® Ç÷¡³Ê´Â Ç×»ó ÃÖÀûÀÎ °áÇÕ ¼ø¼¸¦ ¼±ÅÃÇÑ´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. »ó±Þ À¯Àú¶ó¸é ÀáÁ¤ÀûÀ¸·Î ÀÌ º¯¼ö¸¦ 1·Î ¼³Á¤ÇØ, ¸í½ÃÀûÀ¸·Î Èñ¸ÁÀ¸·Î ÇÏ´Â °áÇÕ ¼ø¼¸¦ ÁöÁ¤Çصµ ±¦ÂúÀ» °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºSection 13.3À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.