OSC 2011 Hokkaidoã®çºè¡¨ã§ä½¿ç¨ããã¹ã©ã¤ãè³æã§ãã å¼ç¤¾ãããã©ã¦ã¶ä¸å½å¿ãããè±éã¯ã¨ã¹ããã¨ãã£ãã²ã¼ã ããPHPï¼MySQLã§æ§ç¯ãã¦ããä¸ã§ã身ã«ã¤ãããã¦ãã¦ãã注æãã¹ãç®æãæéãªã©ãã¾ã¨ããè³æã¨ãªã£ã¦ãã¾ããRead less
ã½ã¼ã·ã£ã«ã²ã¼ã éçºè ãªãç¥ã£ã¦ãããã MySQL INDEX + EXPLAINå ¥é åºãæµ ããæ å½ãã¦ã¾ããota ã§ãã æè¡ããã°ç¬¬ä¸åããæ©éæµç¨ã¹ã©ã¤ãã§ç³ã訳ããã¾ãããã社å åå¼·ä¼è³æã¨ãã¦ä½æãããMySQL INDEX + EXPLAINå ¥éãã§ãã å½ç¤¾ã§ãã½ã¼ã·ã£ã«ã²ã¼ã ã®éçºãè¡ã£ã¦ãã¾ããããã®ãããªå¤§éã®ãã¼ã¿ã使ç¨ããã»ã¯ã¨ãªã®é度ãæ±ããããå ´åã«ã¤ã³ããã¯ã¹ã¯å¤§å¤éè¦ã§ãã ã¤ã³ããã¯ã¹ã®æå¹ãªå©ç¨ã«ã¯DBè¨è¨è ã ãã§ã¯ãªãããã°ã©ãã«ãããç¨åº¦ã®ç¥èãæä½éå¿ è¦ã¨ãªãã¾ãããã¤ã³ããã¯ã¹ã«ã¤ãã¦ã®åå¿è åãè³æããã¾ããªãããã§ãã ãã®ã¹ã©ã¤ãã§ã¯ããã°ã©ãã«ç¥ã£ã¦ããã¦æ¬²ãã以ä¸ã®åºæ¬çãªç¹ãã¾ã¨ãã¾ããã INDEXã使ç¨ããæã«æ°ãã¤ããã㨠WHEREå¥ !=ã<>ã¯ã¤ã³ããã¯ã¹ã使ç¨ã§ããªã WHEREå¥ã®å ¨ã¦ã®ANDã«ããã£ã¦ããªãã¤ã³
MySQLã®ãã¥ã¼ãã³ã°ã«ããã¦é常ã«éè¦ã¨ãªãã¡ã¢ãª(ãããã¡)é¢é£ã®ãã©ã¡ã¼ã¿ã«ã¤ãã¦ã ãã¥ã¼ãã³ã°ã®ãã¤ã³ã DSASã®ã¨ããDBãµã¼ã(å®ã¡ã¢ãª4GB)ã®å®éã®è¨å®å¤ ãã¾ã¨ãã¦ã¿ã¾ãã ã¾ããå¿ è¦ã¡ã¢ãªã®ç·éã®è¨ç®ãéçå¤ãè¶ãã¦ãªãããã§ãã¯ãã¦ãããã¹ã¯ãªãããç´¹ä»ãã¾ãã æ¯éãåèã«ãã¦ã¿ã¦ãã ããï¼ ã¾ãæåã«æ³¨æç¹ãã ãããã¡ã«ã¯2ã¤ã®ã¿ã¤ããããã¾ãã ã°ãã¼ãã«ãããã¡ ã¹ã¬ãããããã¡ ã°ãã¼ãã«ãããã¡ã¯mysqldå ¨ä½ã§ãã®ãããã¡ã1ã¤ã ã確ä¿ããããã®ã§ã ããã«å¯¾ãã ã¹ã¬ãããããã¡ã¯ã¹ã¬ãã(ã³ãã¯ã·ã§ã³)ãã¨ã«ç¢ºä¿ããããã®ã§ãã ãã¥ã¼ãã³ã°ã®éã«ã¯ã°ãã¼ãã«/ã¹ã¬ããã®éããæèããããã«ãã¾ãããã ãªããªããã¹ã¬ãããããã¡ã«å¤ãã®ã¡ã¢ãªãå²ãå½ã¦ãã¨ãã³ãã¯ã·ã§ã³ãå¢ããã¨ããã«ã¢ãã¨ããéã«ã¡ã¢ãªä¸è¶³ã«ãªã£ã¦ãã¾ãããã§ãã in
MySQL 5.1ã§è¿½å ãããæ©è½ã«ãã¼ãã£ã·ã§ãã³ã°ããããããã¯é©åã«å©ç¨ããã°é常ã«å¼·åãªæ©è½ã§ãããã¨ã¯ééããªãã®ã ãã使ãã©ãããé£ããããªããªãã ã¤ã³ããã¯ã¹ãã¤ããã ãã§ã«ãã¼åºæ¥ãå ´åãå¤ãã ãã¼ã·ã§ãã³ã°ã使ããã«ãåã«ãã¼ãã«ãåãã¦ãã¾ãã°ããã ãã¼ãã«ã巨大ã«ãªããªãã¨ãã¾ãå¹æãå®æã§ããªãã 使ãæ¹ãééããã¨æ§è½ãè½ã¡ã¦ãã¾ãã ãªã©ã®åé¡ãããããã ããã ãããªããã§ãä»æ¥ã¨ææ¥ã§ãã¼ãã£ã·ã§ãã³ã°ãå½¹ã«ç«ã¤ã·ã¼ã³ã2ã¤ç´¹ä»ãããã¨æããä»æ¥ã¯ä¸ã¤ç®ãã¤ã³ããã¯ã¹ãã¤ãããã«ã©ã ã®ã«ã¼ãã£ããªãã£ãä½ãå ´åã ãã«ã¼ãã£ããªãã£ã¨ã¯æ¥æ¬èªã«è¨³ãã¨æ¿åº¦ã¨ã訳ãããããè¦ã¯å¤ã®ç¨®é¡ï¼åæ£å ·åï¼ã®ãã¨ã§ãããä¾ãã°ãYesãNoã®2ã¤ã®å¤ããã¨ããªãã«ã©ã ã¯é常ã«ã«ã¼ãã£ããªãã£ãä½ããã¤ã³ããã¯ã¹ãã¤ããã¨ã¨ã¦ãå¹çãæªããã¤ã³ããã¯ã¹ã使ã£ã¦ç®çã®è¡ã
以åãMySQLãé«éåãã10ã®æ¹æ³ã¨ããæ稿ã§ãEXPLAINã®è¦æ¹ã«ã¤ãã¦ã¯ããã解説ãããã¨æããã¨æ¸ãã¦ãã¾ã£ãã®ã§ãä»æ¥ã¯ãã®å ¬ç´ï¼ãæãããã¨æãã MySQLã®ãã¥ã¼ãã³ã°ã§æã大åãªã®ã¯ãã¯ã¨ãªã¨ã¹ãã¼ãã®æé©åã§ãããã¹ãã¼ãã®è¨è¨ã¯ä¸åº¦æ±ºãã¦ãã¾ãã¨ãã®ãã¼ãã«ãå©ç¨ããå ¨ã¦ã®ã¯ã¨ãªã«å½±é¿ãã¦ãã¾ããããªããªãå¤æ´ãããã¨ã¯åºæ¥ãªãããã¯ã¨ãªã¯ãã®ã¯ã¨ãªã ããæ¸ãç´ãã°è¯ãã®ã§å¤æ´ã®æ·å± ã¯ä½ããããã¦é ãã¯ã¨ãªããªãããã¨ã¯ãæ§è½ãå¤§å¹ ã«åä¸ãããããã®æãæå¹ãªæ段ã§ãããå¾ã£ã¦ãã¢ããªã±ã¼ã·ã§ã³ã®æ§è½ãåä¸ãããããªããã¾ãæåã«ã¯ã¨ãªã®ãã¥ã¼ãã³ã°ãæ¤è¨ããã¹ããªã®ã§ããã æé©åããã¹ãã¯ã¨ãªã¯ã¹ãã¼ã¯ã¨ãªãã°ãã¯ã¨ãªã¢ãã©ã¤ã¶ã§è¦ä»ããããããã§ã¯ãã®ãããªã¯ã¨ãªãè¦ã¤ãã£ãå ´åã«ã¯ã©ã®ããã«æé©åããã°ããã®ãï¼ãã®ããã«ã¯ã¾ãç¾å¨ã©ã®ããã«ã¯ã¨ãªãå®è¡ã
X25-MãSSDã§æ¤ç´¢ãã¦ããæ¹ãé常ã«å¤ãã®ã§ãæ¬ããã°å ã®SSDé¢é£è¨äºããªã¹ããã¦ããã¾ãã MySQLã®ãã³ããã¼ã¯ãç¨ããIntel X25-M SSDã®è©ä¾¡ (æ¬è¨äº) SSDã®çã®æ§è½ãå¼ãåºã MySQL 5.1.38 InnoDB Plugin (2009/09/07) å é±æ«Intelã®SSDãX25-Mãçªç¶7,000åã»ã©å¤ä¸ããããã®ã§ãã¤ãã«ææ ¢ã§ããæãåºãã¦ãã¾ãã¾ãããåãã¦ã®SSDå°å ¥ã§ãã SSDã®ãã³ããã¼ã¯è¨äºã¯å½å ã»æµ·å¤åããããããããã¾ãããå®éã«ãã¼ã¿ãã¼ã¹ãä¹ãã¦è¨æ¸¬ããè¨äºã¯ããã»ã©å¤ãããã¾ãããããã§ãå æ¥ãç´¹ä»ããtpcc-mysqlãç¨ãã¦ãã³ããã¼ã¯ãã¹ããè¡ã£ã¦ã¿ã¾ããã ãã¼ã¿ãã¼ã¹ãµã¼ã OS ï¼ Windows XP SP3 32bit CPU ï¼ Core2 Duo T7300 2.0GHz (EIST OFF)
ããMySQLã¯ãµãã¯ã¨ãªãå¼±ãã¨è¨ãããããããã¯æ¬å½ã ãããï¼ååã¯æ¬å½ã§ååã¯åã§ãããMySQLã®ãµãã¯ã¨ãªã ã£ã¦ãªãã§ãããã§ãé ãããã§ã¯ãªããè½ã¨ãç©´ããã£ããé¿ãã使ãã©ãããééããªããã°ãµãã¯ã¨ãªãé«éã«å®è¡ã§ããã®ã§ãããä»æ¥ã¯MySQLãã©ããªé¢¨ã«ãµãã¯ã¨ãªãå®è¡ããã©ã®ãããªå ´åã«é ãã®ãã¨ãããã¨ã«ã¤ãã¦èª¬æãããã EXPLAINã§å®è¡è¨ç»ã調ã¹ãéã«ãselect_typeã«ã¯ã¯ã¨ãªã®ç¨®é¡ã表示ãããã®ã ãã代表çãªãµãã¯ã¨ãªã«ã¯æ¬¡ã®3ã¤ã®ãã¿ã¼ã³ãããã SUBQUERY DEPENDENT SUBQUERY DERIVED çµè«ããè¨ãããé ãã®ã¯2çªç®ãDEPENDENT SUBQUERYã§ãããDEPENDENT SUBQUERYã¨ã¯ããããç¸é¢ãµãã¯ã¨ãªã«ç¸å½ãããã®ã§ããµãã¯ã¨ãªã«ããã¦å¤é¨ã¯ã¨ãªã®ã«ã©ã ãåç §ãã¦ãããµãã¯ã¨ãªã®ãã¨ã§ããããã
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãç¥ãã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}