MySQL ÀÇ limit ¿Í ºñ½ÁÇÏ°Ô »ç¿ëÇÑ ¿¹ >>
[Âü°í »çÀÌÆ®] - ROWNUM¿¡ ´ëÇÏ¿© (kimho's Oracle ) testboard ¿¡¼ 5¹øÂ° ºÎÅÍ 10¹øÂ° ±îÁö °ªÀ» ±¸ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ================= oracle_limit.php3 ============================= $offset = 5; // ½ÃÀÛ À§Ä¡ $listnum = 10; // ¼±ÅÃÇÒ ¸®½ºÆ®ÀÇ °³¼ö $fields = "no, name, title, count"; $query = "select $fields from (select rownum as rnum, $fields from testboard) where rnum > $offset and rownum <= $listnum "; $stmt = $oci->query($query); ================= oracle_limit.php3 ============================= ============================ [Âü°í] ============================= SELECT field1, field2 FROM (SELECT field1, field2, rownum as row_no FROM (SELECT field1, field2 FROM table1 ORDER BY field1, field2) WHERE rownum <= 50 ) WHERE row_no >= 11 and row_no <= 20 ; ÀÌ·¸°Ô »ç¿ëÇÏ½Ã¸é ´ëÃæµÉ °Í °°³×¿ä. ±×·¯³ª Å« Å×À̺íÀ» ÀÌ·¸°Ô »ç¿ëÇÏ½Ã¸é ±× ½Ã½ºÅÛÀÌ ¾Æ¹«¸® ¼º´ÉÀÌ ¶Ù¾î³ ½Ã½ºÅÛÀ» »ç¿ëÇÑ´Ù°í ÇÏ´õ¶óµµ À¯Àú°¡ ¸¹¾ÆÁö°í µ¥ÀÌŸ°¡ ´Ã¾î°¡¸é ¼º´ÉÀÌ ´«¿¡ ¶Ù°Ô ÀúÇÏ µÉ °ÍÀÔ´Ï´Ù. full table scan ¿¡ sorting... ÀÌ·± °æ¿ì´Â field1, field2 ¿¡ À妽º¸¦ ¸¸µé°í À妽º¸¦ ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù. create index table1_idx on table1 ( field1, field2 ) tablespace users storage ( initial 1M next 1M pctincrease 0 ) ; SELECT /*+ index_desc( table1 table1_idx ) */ field1, field2 FROM table1 where rownum < 10 ; ±×¸®°í ´ç¿¬È÷ ´ÙÀ½¹ø¿¡´Â ¾Æ·¡¿Í ºñ½ÁÇÑ ·ÎÁ÷À» »ç¿ëÇØ¾ß µÇ°ÚÁÒ? SELECT /*+ index_desc( table1 table1_idx ) */ field1, field2 FROM table1 where rownum < 10 and field1 <= ??? and field2 < ??? ; Å×½ºÆ® ÇØ º¸¼¼¿ä. -- bravo3 ´ÔÀÌ ¾²½Å ±Û: >> 1 ~ 10 ±îÁö´Â Á¦´ë·Î select µË´Ï´Ù. >> >> SELECT * FROM (SELECT * FROM (SELECT field1, field2 FROM table1 ORDER BY >> field1, field2) WHERE rownum <= 50 ORDER BY rownum) WHERE rownum >= 1 and >> rownum <= 10 >> >> ±×·¯³ª, 11 ~ 20 ±îÁö select Çϸé 'no rows selected' ¶ó°í select °¡ >> ¾ÈµË´Ï´Ù. >> >> SELECT * FROM (SELECT * FROM (SELECT field1, field2 FROM table1 ORDER BY >> field1, field2) WHERE rownum <= 50 ORDER BY rownum) WHERE rownum >= 11 and >> rownum <= 20 ============================ /[Âü°í] ============================= ============================ [Âü°í] ============================= ¿À¶óŬ·Î °Ô½ÃÆÇÀ» ±¸ÇöÇÒ¶§ °¡Àå ¾Ö·ÎÁ¡ÀÌ »ý±â´Â ºÎºÐÀÌ ÆäÀÌ¡Àεí ÇÕ´Ï´Ù. °£ÆíÇÏ°Ô ÇÏ´Â ¹æ¹ý¿¡´Â index_desc ÈùÆ®¸¦ »ç¿ëÇØ¼ ±¸ÇöÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ ¿ªÁ¤·ÄÀ妽º(?)¸¦ »ç¿ëÇØ¼ rownumÀ» ÀÌ¿ëÇÑ ÆäÀÌ¡À» ÇÏ´Â ¹æ¹ýÀε¥¿ä ¿¹¹®À» µé¾îº¸¸é ´ÙÀ½°ú °°½À´Ï´Ù. Primary key´Â Àϰý ½Ã¸®¾ó ³Ñ¹ö(ID¶ó°í ÇÏÁÒ)¶ó Çϰí Primary keyÀÇ Constraints NameÀÌ PK_BOARD¶ó°í ÇÑ´Ù¸é select a.id from (select /*+ index_desc(PK_BOARD) */ rownum as rnum, id from board where id>0 order by id desc) a where rnum >= 1 and rownum <=20°ú °°Àº Çü½ÄÀÇ Äõ¸®¹®À» ¾²¸é ÇÑÆäÀÌÁö¿¡ 20°³ÀÇ ±ÛÀÌ ¶ß°Ô µË´Ï´Ù. °Ô½ÃÆÇÀÇ ±¸Çö¹æ¹ýÀº MysqlÀ» »ç¿ëÇØº¸¼Ì´Ù¸é ±âº»ÀûÀ¸·Î ÃëÇâ¿¡ ¸Â´Â ¹æÇâÀ¸·Î ±¸ÇöÇÏ½Ã¸é µÇ±¸¿ä Oracle ¿ª½Ã ÆäÀÌ¡ ÀÌ¿ÜÀÇ ºÎºÐ¿¡¼´Â Mysql°ú ¸¶Âù°¡Áö¶ó°í »ý°¢À» ÇÕ´Ï´Ù. ============================ /[Âü°í] =============================