°Ê²¼¤Îµ½Ò¤Ë¤è¤ë¤È ORDER BY ¤¹¤ë¥Õ¥£¡¼¥ë¥É¤Ë¤Ä¤¤¤Æ btree ¤Ç INDEX ¤òºî¤Ã¤Æ¤ª¤¯¤È¹â®²½½ÐÍè¤ë¤È¤Î¤³¤È¡£
°Ê²¼¤Î¿Í¤ÎÊó¹ð¤Ë¤è¤ë¤È¥Ç¡¼¥¿·ï¿ô¤Ë¤è¤êïçÃͤ¬Æ¯¤¯¤é¤·¤¯¡¢¤¢¤Þ¤êÂ礤ʥǡ¼¥¿¥»¥Ã¥È¤À¤È¶¯À©Åª¤Ë Seq Scan ¤Ç¥×¥é¥Ë¥ó¥°¤µ¤ì¤Æ¤·¤Þ¤¦¤é¤·¤¤¡£ ¤É¤¦¤Ë¤«¤·¤Æ¡¢Index Scan ¤ò¶¯À©½ÐÍè¤ó¤â¤Î¤«¤ÈÄ´¤Ù¤Æ¤¤¤¿¤é¡¢°Ê²¼¤Î¥Õ¥©¡¼¥é¥à¤ËÅú¤¨¤òȯ¸«¡£ °Ê²¼¤Î¤è¤¦¤ËÀßÄꤷ¤Æ¤ß¤í¤È¡£
¼ÂºÝ¤Ë»î¤·¤Æ¤ß¤¿·ë²Ì¤Ï°Ê²¼¤ÎÄ̤ꡣ
·ë²Ì¤À¤±´Ê·é¤Ë¤Þ¤È¤á¤ë¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
³Î¤«¤Ë¡¢¥Ç¡¼¥¿¿ô 10 ÇܤËÁý¤¨¤Æ¤â Seq Scan + Sort ¤Ç¸íº¹¤ÎÈϰϤǤ·¤«Â®ÅÙ¤¬ÊѤï¤é¤Ê¤¤¤¬¡¢Index Scan ¤À¤È¥Ç¡¼¥¿¿ô¤Ë¤Û¤ÜÈæÎ㤷¤ÆÃÙ¤¯¤Ê¤Ã¤Æ¤ë¤È¤¤¤¦Ìܤòµ¿¤¤¤½¤¦¤Ê·ë²Ì¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£Index Scan ¤Ï Seq Scan ¤Î³µ¤Í 10 ÇÜÃÙ¤¤¤È¤¤¤¦·ë²Ì¤Î¤è¤¦¤À¡£¤È¤Ï¸À¤¨¡¢¾åµ¤Î¾ò·ï¤ÇÁ´·ï¥½¡¼¥È¤¹¤ë¾ì¹ç¡¢°ÍÁ³¤È¤·¤Æ Index Scan ¤Î¤¬ 2 ÇܤÁ¤ç¤¤Â®¤¤¤ï¤±¤Ç¡¢PostgreSQL ¤Î plannner ¤ÎïçÃͤθ«ÀѤê¤Ï¡¢ºÇŬ²½¤¬¾¯¡¹´Å¤¤¤È¸À¤¨¤ë¡£¤¤¤Ã¤½¤Î»ö FFTW ¤ß¤¿¤¯¼Â¬(measure)¥â¡¼¥É¤È¤«¤¢¤Ã¤Æ¤âÎɤ¤¤ó¤¸¤ã¤Ê¤¤¤Î¤«¡©¤È»×¤¦¡£
²¿¤«¼ê¤Ï¤¢¤ë¤ó¤¸¤ã¤Ê¤¤¤Î¤«¤È»×¤¤¡¢¾¯¤·Ä´¤Ù¤Æ¤ß¤¿¤È¤³¤í¡¢¥Þ¥Ë¥å¥¢¥ë¤Î°Ê²¼¤ÎÉôʬ¤Ë¥Á¥å¡¼¥Ë¥ó¥°½ÐÍ褽¤¦¤ÊÊ·°Ïµ¤¤Î¤³¤È¤Ï½ñ¤¤¤Æ¤Ï¤¢¤Ã¤¿¡£
- PostgreSQL ¥Þ¥Ë¥å¥¢¥ë / ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÈORDER BY
- PostgreSQL¥Á¥å¡¼¥Ë¥ó¥°¼ÂÁ©¥Æ¥¯¥Ë¥Ã¥¯ / Â裴²ó¡§¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î³èÍѤˤè¤ë¥Á¥å¡¼¥Ë¥ó¥°
°Ê²¼¤Î¿Í¤ÎÊó¹ð¤Ë¤è¤ë¤È¥Ç¡¼¥¿·ï¿ô¤Ë¤è¤êïçÃͤ¬Æ¯¤¯¤é¤·¤¯¡¢¤¢¤Þ¤êÂ礤ʥǡ¼¥¿¥»¥Ã¥È¤À¤È¶¯À©Åª¤Ë Seq Scan ¤Ç¥×¥é¥Ë¥ó¥°¤µ¤ì¤Æ¤·¤Þ¤¦¤é¤·¤¤¡£ ¤É¤¦¤Ë¤«¤·¤Æ¡¢Index Scan ¤ò¶¯À©½ÐÍè¤ó¤â¤Î¤«¤ÈÄ´¤Ù¤Æ¤¤¤¿¤é¡¢°Ê²¼¤Î¥Õ¥©¡¼¥é¥à¤ËÅú¤¨¤òȯ¸«¡£ °Ê²¼¤Î¤è¤¦¤ËÀßÄꤷ¤Æ¤ß¤í¤È¡£
set enable_seqscan = false;¤¿¤À¤· Index Scan ¤Ï Seq Scan ¤ËÈæ¤Ù¤Æ¥¯¥½ÃÙ¤¤¤Î¤Ç»ß¤á¤È¤±¤È¤Î¤³¤È¡£
¼ÂºÝ¤Ë»î¤·¤Æ¤ß¤¿·ë²Ì¤Ï°Ê²¼¤ÎÄ̤ꡣ
·ë²Ì¤À¤±´Ê·é¤Ë¤Þ¤È¤á¤ë¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
¾ò·ï | ¥Ç¡¼¥¿·ï¿ô | ½êÍ×»þ´Ö |
---|---|---|
sort¤Ê¤·Á´·ï | 714449 | 2559.071 ms |
LIMIT 61470 | 61470 | 1081.756 ms |
LIMIT 61471 | 61471 | 23536.696 ms |
enable_seqscan=true | 714449 | 23418.107 ms |
enable_seqscan=false | 714449 | 9585.890 ms |
²¿¤«¼ê¤Ï¤¢¤ë¤ó¤¸¤ã¤Ê¤¤¤Î¤«¤È»×¤¤¡¢¾¯¤·Ä´¤Ù¤Æ¤ß¤¿¤È¤³¤í¡¢¥Þ¥Ë¥å¥¢¥ë¤Î°Ê²¼¤ÎÉôʬ¤Ë¥Á¥å¡¼¥Ë¥ó¥°½ÐÍ褽¤¦¤ÊÊ·°Ïµ¤¤Î¤³¤È¤Ï½ñ¤¤¤Æ¤Ï¤¢¤Ã¤¿¡£
- PostgreSQL ¥Þ¥Ë¥å¥¢¥ë
- ¥«¥Æ¥´¥ê¡§
- ¥Ñ¥½¥³¥ó
- ¥×¥í¥°¥é¥ß¥ó¥°
¥¿¥°
¥³¥á¥ó¥È¤ò¤«¤¯