ã°ããŒãã«ã§é«è² è·ãªç°å¢ã«ãããããŒã¿ããŒã¹ããã©ãŒãã³ã¹ãšå¹çãåäžãããããã®SQLã¯ãšãªæé©åãã¯ããã¯ããã¹ã¿ãŒããŸããããã€ã³ããã¯ã¹ãã¯ãšãªæžãæããªã©ãåŠã³ãŸãã
SQLã¯ãšãªæé©åãã¯ããã¯ïŒã°ããŒãã«ããŒã¿ããŒã¹ã®ããã®å æ¬çã¬ã€ã
仿¥ã®ããŒã¿äž»å°åã®äžçã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãšããžãã¹ã®æåã«ãšã£ãŠãå¹ççãªããŒã¿ããŒã¹ããã©ãŒãã³ã¹ãäžå¯æ¬ ã§ããäœéãªSQLã¯ãšãªã¯ããŠãŒã¶ãŒã®äžæºãæŽå¯ã®é å»¶ãã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¹ãã®å¢å ã«ã€ãªããå¯èœæ§ããããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãMySQLãPostgreSQLãSQL ServerãOracleãªã©ã®ããŸããŸãªããŒã¿ããŒã¹ã·ã¹ãã ã«é©çšå¯èœãªããŸããŸãªSQLã¯ãšãªæé©åãã¯ããã¯ãæ¢ããèŠæš¡ãå Žæã«é¢ä¿ãªããããŒã¿ããŒã¹ãæé©ãªããã©ãŒãã³ã¹ãçºæ®ããããšãä¿èšŒããŸããããã§ã¯ãããŸããŸãªããŒã¿ããŒã¹ã·ã¹ãã ã«æ®éçã«é©çšå¯èœã§ãç¹å®ã®åœãå°åã®æ £è¡ã«äŸåããªããã¹ããã©ã¯ãã£ã¹ã«çŠç¹ãåœãŠãŸãã
SQLã¯ãšãªæé©åã®åºæ¬ãçè§£ãã
ç¹å®ã®ãã¯ããã¯ã«å ¥ãåã«ãããŒã¿ããŒã¹ãSQLã¯ãšãªãã©ã®ããã«åŠçããããšããåºæ¬ãçè§£ããããšãäžå¯æ¬ ã§ããã¯ãšãªãªããã£ãã€ã¶ãŒã¯ãã¯ãšãªãåæããæé©ãªå®è¡èšç»ãéžæãããããå®è¡ããéèŠãªã³ã³ããŒãã³ãã§ãã
ã¯ãšãªå®è¡èšç»
ã¯ãšãªå®è¡èšç»ã¯ãããŒã¿ããŒã¹ãã¯ãšãªãå®è¡ããæ¹æ³ã®ããŒããããã§ããå®è¡èšç»ãçè§£ãåæããããšã¯ãããã«ããã¯ãšæé©åã®é åãç¹å®ããããã«æãéèŠã§ããã»ãšãã©ã®ããŒã¿ããŒã¹ã·ã¹ãã ã¯ãå®è¡èšç»ã衚瀺ããããŒã«ãæäŸããŠããŸãïŒäŸïŒMySQLãšPostgreSQLã®`EXPLAIN`ãSQL Server Management Studioã®ãæšå®å®è¡èšç»ã®è¡šç€ºããOracleã®`EXPLAIN PLAN`ïŒã
å®è¡èšç»ã§æ³šç®ãã¹ãç¹ã¯æ¬¡ã®ãšããã§ãã
- ãã«ããŒãã«ã¹ãã£ã³ïŒãããã¯ãç¹ã«å€§èŠæš¡ãªããŒãã«ã§ã¯ãäžè¬çã«éå¹ççã§ããé©åãªã€ã³ããã¯ã¹ããªãããšã瀺ããŠããŸãã
- ã€ã³ããã¯ã¹ã¹ãã£ã³ïŒãã«ããŒãã«ã¹ãã£ã³ãããåªããŠããŸãããã€ã³ããã¯ã¹ã¹ãã£ã³ã®çš®é¡ãéèŠã§ããã¹ãã£ã³ã€ã³ããã¯ã¹ãããã·ãŒã±ã³ã·ã£ã«ã€ã³ããã¯ã¹ã®æ¹ãæãŸããã§ãã
- ããŒãã«çµåïŒçµåé åºãšçµåã¢ã«ãŽãªãºã ïŒäŸïŒããã·ã¥çµåãããŒãžçµåããã¹ãã«ãŒãçµåïŒãçè§£ããŸããäžé©åãªçµåé åºã¯ãã¯ãšãªãåçã«é ãããå¯èœæ§ããããŸãã
- ãœãŒãïŒãœãŒãæäœã¯ãç¹ã«ã¡ã¢ãªã«åãŸããªãå€§èŠæš¡ãªããŒã¿ã»ãããé¢ããå Žåãã³ã¹ãããããå¯èœæ§ããããŸãã
ããŒã¿ããŒã¹çµ±èš
ã¯ãšãªãªããã£ãã€ã¶ãŒã¯ãå®è¡èšç»ã«é¢ããæ å ±ã«åºã¥ããæ±ºå®ãäžãããã«ããŒã¿ããŒã¹çµ±èšã«äŸåããŠããŸããçµ±èšã¯ãããŒãã«ãšã€ã³ããã¯ã¹ã®ããŒã¿ååžãã«ãŒãã£ããªãã£ããµã€ãºã«é¢ããæ å ±ãæäŸããŸããææ°ã§ãªãããŸãã¯äžæ£ç¢ºãªçµ±èšã¯ãæé©ã§ã¯ãªãå®è¡èšç»ã«ã€ãªããå¯èœæ§ããããŸãã
次ã®ãããªã³ãã³ãã䜿çšããŠãããŒã¿ããŒã¹çµ±èšã宿çã«æŽæ°ããŠãã ããã
- MySQLïŒ `ANALYZE TABLE table_name;`
- PostgreSQLïŒ `ANALYZE table_name;`
- SQL ServerïŒ `UPDATE STATISTICS table_name;`
- OracleïŒ `DBMS_STATS.GATHER_TABLE_STATS(ownname => 'schema_name', tabname => 'table_name');`
çµ±èšã®æŽæ°ãèªååããããšã¯ãã¹ããã©ã¯ãã£ã¹ã§ããã»ãšãã©ã®ããŒã¿ããŒã¹ã·ã¹ãã ã¯ãèªåçµ±èšåéãžã§ããæäŸããŠããŸãã
äž»èŠãªSQLã¯ãšãªæé©åãã¯ããã¯
次ã«ãSQLã¯ãšãªãæé©åããããã«äœ¿çšã§ããå ·äœçãªãã¯ããã¯ãããã€ã玹ä»ããŸãã
1. ã€ã³ããã¯ã¹æŠç¥
ã€ã³ããã¯ã¹ã¯ãå¹ççãªã¯ãšãªããã©ãŒãã³ã¹ã®åºç€ã§ããé©åãªã€ã³ããã¯ã¹ãéžæãã广çã«äœ¿çšããããšãéèŠã§ããã€ã³ããã¯ã¹ã¯èªã¿åãããã©ãŒãã³ã¹ãåäžãããŸãããã€ã³ããã¯ã¹ã®ç¶æã®ãªãŒããŒãããã®ããã«æžã蟌ã¿ããã©ãŒãã³ã¹ïŒæ¿å ¥ãæŽæ°ãåé€ïŒã«åœ±é¿ãäžããå¯èœæ§ãããããšãå¿ããªãã§ãã ããã
ã€ã³ããã¯ã¹ãä»ããã¹ãåã®éžæ
`WHERE`å¥ã`JOIN`æ¡ä»¶ã`ORDER BY`å¥ã§é »ç¹ã«äœ¿çšãããåã«ã€ã³ããã¯ã¹ãä»ããŸãã以äžãèæ ®ããŠãã ããã
- ç䟡述èªïŒ `=`ã§äœ¿ãããåã¯ãã€ã³ããã¯ã¹ã®åªããåè£ã§ãã
- ç¯å²è¿°èªïŒ `>`, `<`, `>=`, `<=`, `BETWEEN`ã§äœ¿ãããåãè¯ãåè£ã§ãã
- è€åã€ã³ããã¯ã¹ã®å é åïŒè€åã€ã³ããã¯ã¹ã®åã®é åºã¯éèŠã§ããæãé »ç¹ã«äœ¿çšãããåãå é åã«ããå¿ èŠããããŸãã
äŸïŒ `order_id`ã`customer_id`ã`order_date`ã`order_total`ã®åãæã€`orders`ããŒãã«ãæ€èšããŸãã`customer_id`ãš`order_date`ã§é »ç¹ã«ã¯ãšãªãå®è¡ããå Žåã`(customer_id, order_date)`ã®è€åã€ã³ããã¯ã¹ãæçã§ãã
```sql CREATE INDEX idx_customer_order_date ON orders (customer_id, order_date); ```
ã€ã³ããã¯ã¹ã®çš®é¡
ããŸããŸãªããŒã¿ããŒã¹ã·ã¹ãã ãããŸããŸãªã€ã³ããã¯ã¹ã¿ã€ããæäŸããŠããŸããããŒã¿ãšã¯ãšãªãã¿ãŒã³ã«åºã¥ããŠé©åãªã€ã³ããã¯ã¹ã¿ã€ããéžæããŠãã ããã
- B-treeã€ã³ããã¯ã¹ïŒæãäžè¬çãªã¿ã€ãã§ãç䟡ã¯ãšãªãšç¯å²ã¯ãšãªã«é©ããŠããŸãã
- ããã·ã¥ã€ã³ããã¯ã¹ïŒç䟡ã«ãã¯ã¢ããã«ã¯å¹ççã§ãããç¯å²ã¯ãšãªã«ã¯é©ããŠããŸããïŒMySQLã®MEMORYã¹ãã¬ãŒãžãšã³ãžã³ãªã©ãäžéšã®ããŒã¿ããŒã¹ã§å©çšå¯èœïŒã
- å šæã€ã³ããã¯ã¹ïŒããã¹ãããŒã¿ã®æ€çŽ¢çšã§ãïŒäŸïŒã¯ã€ã«ãã«ãŒãä»ãã®`LIKE`æŒç®åãMySQLã®`MATCH AGAINST`ïŒã
- 空éã€ã³ããã¯ã¹ïŒå°ç空éããŒã¿ãšã¯ãšãªã«äœ¿çšãããŸãïŒäŸïŒããªãŽã³å ã®ãã€ã³ããæ€çŽ¢ïŒã
ã«ããªã³ã°ã€ã³ããã¯ã¹
ã«ããªã³ã°ã€ã³ããã¯ã¹ã¯ãã¯ãšãªãæºããããã«å¿ èŠãªãã¹ãŠã®åãå«ãã§ãããããããŒã¿ããŒã¹ã¯ããŒãã«èªäœã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãããããã«ãããããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
äŸïŒç¹å®ã®`customer_id`ã®`order_id`ãš`order_total`ãååŸããããã«`orders`ãé »ç¹ã«ã¯ãšãªããå Žåã`(customer_id, order_id, order_total)`ã®ã«ããªã³ã°ã€ã³ããã¯ã¹ãçæ³çã§ãã
```sql CREATE INDEX idx_customer_covering ON orders (customer_id, order_id, order_total); ```
ã€ã³ããã¯ã¹ã¡ã³ããã³ã¹
æéãçµã€ãšãã€ã³ããã¯ã¹ã¯æçåããããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸããå¹çãç¶æããããã«ãã€ã³ããã¯ã¹ã宿çã«åæ§ç¯ãŸãã¯åç·šæããŠãã ããã
- MySQLïŒ `OPTIMIZE TABLE table_name;`
- PostgreSQLïŒ `REINDEX TABLE table_name;`
- SQL ServerïŒ `ALTER INDEX ALL ON table_name REBUILD;`
- OracleïŒ `ALTER INDEX index_name REBUILD;`
2. ã¯ãšãªæžãæããã¯ããã¯
å€ãã®å Žåãã¯ãšãªèªäœãããå¹ççã«æžãæããããšã§ãã¯ãšãªããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
`SELECT *`ã®åé¿
åžžã«`SELECT`ã¹ããŒãã¡ã³ãã§å¿ èŠãªåãæå®ããŠãã ããã`SELECT *`ã¯ãå¿ èŠãªãå Žåã§ããã¹ãŠã®åãååŸããI/Oãšãããã¯ãŒã¯ãã©ãã£ãã¯ãå¢å ãããŸãã
æªãäŸïŒ `SELECT * FROM orders WHERE customer_id = 123;`
è¯ãäŸïŒ `SELECT order_id, order_date, order_total FROM orders WHERE customer_id = 123;`
`WHERE`å¥ã®å¹æçãªäœ¿çš
ã¯ãšãªã®æ©ã段éã§ããŒã¿ããã£ã«ã¿ãªã³ã°ããŸããããã«ãããåŸç¶ã®ã¹ãããã§åŠçããå¿ èŠãããããŒã¿éãåæžãããŸãã
äŸïŒ 2ã€ã®ããŒãã«ãçµåããŠãããã£ã«ã¿ãªã³ã°ããã®ã§ã¯ãªããçµåããåã«åããŒãã«ãåå¥ã«ãã£ã«ã¿ãªã³ã°ããŸãã
å é ã¯ã€ã«ãã«ãŒãä»ã`LIKE`ã®åé¿
`LIKE '%pattern%'`ã䜿çšãããšãããŒã¿ããŒã¹ãã€ã³ããã¯ã¹ã䜿çšã§ããªããªããŸããå¯èœãªå Žåã¯ã`LIKE 'pattern%'`ã䜿çšããããå šææ€çŽ¢æ©èœã®äœ¿çšãæ€èšããŠãã ããã
æªãäŸïŒ `SELECT * FROM products WHERE product_name LIKE '%widget%';`
è¯ãäŸïŒ `SELECT * FROM products WHERE product_name LIKE 'widget%';`ïŒé©åãªå ŽåïŒãŸãã¯å šæã€ã³ããã¯ã¹ã䜿çšããŸãã
`COUNT(*)`ã®ä»£ããã«`EXISTS`ã䜿çš
è¡ã®ååšããã§ãã¯ããå Žåã`EXISTS`ã¯äžè¬çã«`COUNT(*)`ãããå¹ççã§ãã`EXISTS`ã¯äžèŽãèŠã€ããæ¬¡ç¬¬æ€çŽ¢ã忢ããŸããã`COUNT(*)`ã¯äžèŽãããã¹ãŠã®è¡ãã«ãŠã³ãããŸãã
æªãäŸïŒ `SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM orders WHERE customer_id = 123;`
è¯ãäŸïŒ `SELECT CASE WHEN EXISTS (SELECT 1 FROM orders WHERE customer_id = 123) THEN 1 ELSE 0 END;`
ïŒé©åãªå ŽåïŒ`UNION`ã®ä»£ããã«`UNION ALL`ã䜿çš
`UNION`ã¯éè€è¡ãåé€ãããããçµæã®ãœãŒããšæ¯èŒãå¿ èŠã§ããçµæã»ãããéè€ããªãããšãããã£ãŠããå Žåã¯ããã®ãªãŒããŒããããåé¿ããããã«`UNION ALL`ã䜿çšããŠãã ããã
æªãäŸïŒ `SELECT city FROM customers WHERE country = 'USA' UNION SELECT city FROM suppliers WHERE country = 'USA';`
è¯ãäŸïŒ `SELECT city FROM customers WHERE country = 'USA' UNION ALL SELECT city FROM suppliers WHERE country = 'USA';`ïŒé¡§å®¢ãšãµãã©ã€ã€ãŒã®éœåžãéè€ããªãå ŽåïŒ
ãµãã¯ãšãªå¯Ÿçµå
å€ãã®å Žåããµãã¯ãšãªãçµåã«æžãæããããšãã§ããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããããŒã¿ããŒã¹ãªããã£ãã€ã¶ãŒã¯ãåžžã«ãµãã¯ãšãªã广çã«æé©åã§ãããšã¯éããŸããã
äŸïŒ
ãµãã¯ãšãªïŒ `SELECT * FROM orders WHERE customer_id IN (SELECT customer_id FROM customers WHERE country = 'Germany');`
çµåïŒ `SELECT o.* FROM orders o JOIN customers c ON o.customer_id = c.customer_id WHERE c.country = 'Germany';`
3. ããŒã¿ããŒã¹èšèšã®èæ ®äºé
é©åã«èšèšãããããŒã¿ããŒã¹ã¹ããŒãã¯ãã¯ãšãªããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã以äžãèæ ®ããŠãã ããã
æ£èŠå
ããŒã¿ããŒã¹ãæ£èŠåããããšã¯ãããŒã¿åé·æ§ãæžãããããŒã¿æŽåæ§ãåäžãããã®ã«åœ¹ç«ã¡ãŸãã鿣èŠåã¯ãèªã¿åãããã©ãŒãã³ã¹ãåäžãããããšããããŸãããã¹ãã¬ãŒãžã¹ããŒã¹ã®å¢å ãšæœåšçãªããŒã¿äžæŽåã®ä»£åã䌎ããŸãã
ããŒã¿å
åã«é©åãªããŒã¿åãéžæããŠãã ãããããå°ããªããŒã¿åã䜿çšãããšãã¹ãã¬ãŒãžã¹ããŒã¹ãç¯çŽããã¯ãšãªããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
äŸïŒåã®å€ã`INT`ã®ç¯å²ãè¶ ããããšããªãå Žåã¯ã`BIGINT`ã®ä»£ããã«`INT`ã䜿çšããŸãã
ããŒãã£ã·ã§ãã³ã°
å€§èŠæš¡ãªããŒãã«ãããŒãã£ã·ã§ã³åããããšã¯ãããŒãã«ãããå°ããããã管çããããéšåã«åå²ããããšã§ãã¯ãšãªããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããæ¥ä»ãç¯å²ããŸãã¯ãªã¹ããªã©ã®ããŸããŸãªåºæºã«åºã¥ããŠããŒãã«ãããŒãã£ã·ã§ã³åã§ããŸãã
äŸïŒç¹å®ã®æ¥ä»ç¯å²ã®ã¬ããŒãäœæã®ã¯ãšãªããã©ãŒãã³ã¹ãåäžãããããã«ã`order_date`ã§`orders`ããŒãã«ãããŒãã£ã·ã§ã³åããŸãã
4. ã³ãã¯ã·ã§ã³ããŒãªã³ã°
ããŒã¿ããŒã¹æ¥ç¶ã確ç«ããããšã¯ãã³ã¹ãã®ãããæäœã§ããã³ãã¯ã·ã§ã³ããŒãªã³ã°ã¯æ¢åã®æ¥ç¶ãåå©çšããåã¯ãšãªã§æ°ããæ¥ç¶ãäœæãããªãŒããŒããããåæžããŸãã
ã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãšããŒã¿ããŒã¹ãã©ã€ããŒã¯ã³ãã¯ã·ã§ã³ããŒãªã³ã°ããµããŒãããŠããŸããããã©ãŒãã³ã¹ãæé©åããããã«ãã³ãã¯ã·ã§ã³ããŒãªã³ã°ãé©åã«æ§æããŠãã ããã
5. ãã£ãã·ã¥æŠç¥
é »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ããã£ãã·ã¥ããããšã¯ãã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã以äžãæ€èšããŠãã ããã
- ã¯ãšãªãã£ãã·ã¥ïŒé »ç¹ã«å®è¡ãããã¯ãšãªã®çµæããã£ãã·ã¥ããŸãã
- ãªããžã§ã¯ããã£ãã·ã¥ïŒé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãªããžã§ã¯ããã¡ã¢ãªã«ãã£ãã·ã¥ããŸãã
人æ°ã®ãããã£ãã·ã¥ãœãªã¥ãŒã·ã§ã³ã«ã¯ãRedisãMemcachedãããã³ããŒã¿ããŒã¹åºæã®ãã£ãã·ã¥ã¡ã«ããºã ããããŸãã
6. ããŒããŠã§ã¢ã®èæ ®äºé
åºç€ãšãªãããŒããŠã§ã¢ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãããŒã¿ããŒã¹ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã以äžãé©åã§ããããšã確èªããŠãã ããã
- CPUïŒã¯ãšãªå®è¡ãåŠçããã®ã«ååãªåŠçèœåã
- ã¡ã¢ãªïŒã¡ã¢ãªã«ããŒã¿ãšã€ã³ããã¯ã¹ãæ ŒçŽããã®ã«ååãªRAMã
- ã¹ãã¬ãŒãžïŒè¿ éãªããŒã¿ã¢ã¯ã»ã¹çšã®é«éã¹ãã¬ãŒãžïŒäŸïŒSSDïŒã
- ãããã¯ãŒã¯ïŒã¯ã©ã€ã¢ã³ããµãŒããŒéä¿¡çšã®é«åž¯åå¹ ãããã¯ãŒã¯æ¥ç¶ã
7. ã¢ãã¿ãªã³ã°ãšãã¥ãŒãã³ã°
ããŒã¿ããŒã¹ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããäœéãªã¯ãšãªãç¹å®ããŸããããŒã¿ããŒã¹ããã©ãŒãã³ã¹ç£èŠããŒã«ã䜿çšããŠã次ã®ãããªäž»èŠãªã¡ããªã¯ã¹ã远跡ããŸãã
- ã¯ãšãªå®è¡æéïŒã¯ãšãªã®å®è¡ã«ãããæéã
- CPU䜿çšçïŒããŒã¿ããŒã¹ãµãŒããŒã«ãã£ãŠäœ¿çšãããCPUã®å²åã
- ã¡ã¢ãªäœ¿çšéïŒããŒã¿ããŒã¹ãµãŒããŒã«ãã£ãŠäœ¿çšãããã¡ã¢ãªã®éã
- ãã£ã¹ã¯I/OïŒãã£ã¹ã¯ããèªã¿æžããããããŒã¿ã®éã
ç£èŠããŒã¿ã«åºã¥ããŠãæ¹åé åãç¹å®ããããã«å¿ããŠããŒã¿ããŒã¹æ§æããã¥ãŒãã³ã°ã§ããŸãã
ç¹å®ã®ããŒã¿ããŒã¹ã·ã¹ãã ã«é¢ããèæ ®äºé
äžèšã®ãã¯ããã¯ã¯äžè¬çã«é©çšå¯èœã§ãããåããŒã¿ããŒã¹ã·ã¹ãã ã«ã¯ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããç¬èªã®æ©èœãšãã¥ãŒãã³ã°ãã©ã¡ãŒã¿ããããŸãã
MySQL
- ã¹ãã¬ãŒãžãšã³ãžã³ïŒããŒãºã«åºã¥ããŠé©åãªã¹ãã¬ãŒãžãšã³ãžã³ïŒäŸïŒInnoDBãMyISAMïŒãéžæããŸããInnoDBã¯ããã©ã³ã¶ã¯ã·ã§ã³ã¯ãŒã¯ããŒãã§äžè¬çã«æšå¥šãããŸãã
- ã¯ãšãªãã£ãã·ã¥ïŒMySQLã¯ãšãªãã£ãã·ã¥ã¯ã`SELECT`ã¹ããŒãã¡ã³ãã®çµæããã£ãã·ã¥ã§ããŸãããã ããMySQLã®ä»¥éã®ããŒãžã§ã³ïŒ8.0以éïŒã§ã¯éæšå¥šãšãªãã髿žã蟌ã¿ç°å¢ã«ã¯æšå¥šãããŸããã
- ã¹ããŒã¯ãšãªãã°ïŒå®è¡ã«æéããããã¯ãšãªãç¹å®ããããã«ãã¹ããŒã¯ãšãªãã°ãæå¹ã«ããŸãã
PostgreSQL
- AutovacuumïŒPostgreSQLã®autovacuumããã»ã¹ã¯ãäžèŠã«ãªã£ãã¿ãã«ãèªåçã«ã¯ãªãŒã³ã¢ããããçµ±èšãæŽæ°ããŸããæ£ããæ§æãããŠããããšã確èªããŠãã ããã
- Explain AnalyzeïŒ `EXPLAIN ANALYZE`ã䜿çšããŠãã¯ãšãªã®å®éã®å®è¡çµ±èšãååŸããŸãã
- pg_stat_statementsïŒ `pg_stat_statements`æ¡åŒµæ©èœã¯ãã¯ãšãªå®è¡çµ±èšã远跡ããŸãã
SQL Server
- SQL Server Profiler/Extended EventsïŒãããã®ããŒã«ã䜿çšããŠãã¯ãšãªå®è¡ããã¬ãŒã¹ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãã
- Database Engine Tuning AdvisorïŒ Database Engine Tuning Advisorã¯ãã€ã³ããã¯ã¹ããã®ä»ã®æé©åãæšå¥šã§ããŸãã
- Query StoreïŒ SQL Server Query Storeã¯ãã¯ãšãªå®è¡å±¥æŽã远跡ããããã©ãŒãã³ã¹ã®äœäžãç¹å®ããŠä¿®æ£ã§ããããã«ããŸãã
Oracle
- Automatic Workload Repository (AWR)ïŒ AWRã¯ãããŒã¿ããŒã¹ããã©ãŒãã³ã¹çµ±èšãåéããããã©ãŒãã³ã¹åæã®ããã®ã¬ããŒããæäŸããŸãã
- SQL DeveloperïŒ Oracle SQL Developerã¯ãã¯ãšãªæé©åãšããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã®ããã®ããŒã«ãæäŸããŸãã
- Automatic SQL Tuning AdvisorïŒ Automatic SQL Tuning Advisorã¯ãã¯ãšãªããã©ãŒãã³ã¹ãåäžãããããã®SQLãããã¡ã€ã«å€æŽãæšå¥šã§ããŸãã
ã°ããŒãã«ããŒã¿ããŒã¹ã®èæ ®äºé
è€æ°ã®å°ççå°åã«ãŸãããããŒã¿ããŒã¹ãæ±ãå Žåã¯ã以äžãèæ ®ããŠãã ããã
- ããŒã¿ã¬ããªã±ãŒã·ã§ã³ïŒããŒã¿ã¬ããªã±ãŒã·ã§ã³ã䜿çšããŠãããŸããŸãªå°åã«ããŒã«ã«ããŒã¿ã¢ã¯ã»ã¹ãæäŸããŸããããã«ãããã¬ã€ãã³ã·ãåæžããããããã®å°åã®ãŠãŒã¶ãŒã®ããã©ãŒãã³ã¹ãåäžããŸãã
- ãªãŒãã¬ããªã«ïŒãã©ã€ããªããŒã¿ããŒã¹ãµãŒããŒã®è² è·ã軜æžããããã«ããªãŒãã¬ããªã«ã«èªã¿åããã©ãã£ãã¯ããªãããŒãããŸãã
- ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒïŒCDNã䜿çšããŠããŠãŒã¶ãŒã«è¿ãéçã³ã³ãã³ãããã£ãã·ã¥ããŸãã
- ããŒã¿ããŒã¹ç §åé åºïŒããŒã¿ããŒã¹ã®ç §åé åºããããŒã¿ã§äœ¿çšãããèšèªãšæåã»ããã«é©ããŠããããšã確èªããŸããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ã¯Unicodeç §åé åºã®äœ¿çšãæ€èšããŠãã ããã
- ã¿ã€ã ãŸãŒã³ïŒæ¥æãUTCã§ä¿åããã¢ããªã±ãŒã·ã§ã³ã§ãŠãŒã¶ãŒã®ããŒã«ã«ã¿ã€ã ãŸãŒã³ã«å€æããŸãã
çµè«
SQLã¯ãšãªæé©åã¯ãç¶ç¶çãªããã»ã¹ã§ããã¯ãšãªå®è¡ã®åºæ¬ãçè§£ãããã®ã¬ã€ãã§èª¬æãããŠãããã¯ããã¯ãé©çšããããŒã¿ããŒã¹ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããããšã«ãããããŒã¿ããŒã¹ãå¹ççãã€å¹æçã«å®è¡ãããŠããããšã確èªã§ããŸããããŒã¿ãšã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãé²åããã«ã€ããŠãæé©åæŠç¥ã宿çã«ã¬ãã¥ãŒããã³èª¿æŽããããšãå¿ããªãã§ãã ãããSQLã¯ãšãªã®æé©åã¯ãã°ããŒãã«ã«é«éã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããžãã¹ãæé·ããã«ã€ããŠããŒã¿ã€ã³ãã©ã¹ãã©ã¯ãã£ã广çã«ã¹ã±ãŒãªã³ã°ãããããã«ããããã«äžå¯æ¬ ã§ããå®éšããããšãæãããå®è¡èšç»ãåæããããŒã¿ããŒã¹ã·ã¹ãã ãæäŸããããŒã«ã掻çšããŠæé©ãªããã©ãŒãã³ã¹ãå®çŸããŠãã ããããããã®æŠç¥ãå埩çã«å®è£ ããå倿Žã®åœ±é¿ããã¹ãããŠæž¬å®ããããšã§ãããŒã¿ããŒã¹ããã©ãŒãã³ã¹ãç¶ç¶çã«åäžãããŠããããšã確èªããŠãã ããã