- 1 1. ã¯ããã«
- 2 2. äžæããŒãã«ã®åºæ¬
- 3 3. äžæããŒãã«ã®äœææ¹æ³
- 4 4. äžæããŒãã«ã®äœ¿ç𿹿³
- 5 5. äžæããŒãã«ã®ç®¡çãšåé€
- 6 6. äžæããŒãã«ã®æŽ»çšäŸ
- 7 7. äžæããŒãã«ã®ä»£æ¿ææ®µãšå¶çŽ
- 7.1 äžæããŒãã«ã®äž»ãªå¶çŽ
- 7.2 äžæããŒãã«ã®ä»£æ¿ææ®µ
- 7.3 ãŸãšã
- 8 8. FAQïŒãããã質åïŒ
- 8.1 1. äžæããŒãã«ã¯ä»ã®ã»ãã·ã§ã³ããåç §ã§ããŸããïŒ
- 8.2 2. äžæããŒãã«ã®äœæã«å¿ èŠãªæš©éã¯ïŒ
- 8.3 3. äžæããŒãã«ã¯ãã£ã¹ã¯å®¹éã«åœ±é¿ããŸããïŒ
- 8.4 4. äžæããŒãã«ãšå éšäžæããŒãã«ã®éãã¯ïŒ
- 8.5 5. äžæããŒãã«ã¯ã¹ã¬ããéã§å ±æã§ããŸããïŒ
- 8.6 6. äžæããŒãã«ã䜿ããšããã©ãŒãã³ã¹ãèœã¡ãããšã¯ãããŸããïŒ
- 8.7 7. äžæããŒãã«ã®ããã©ãŒãã³ã¹ãæ¹åããæ¹æ³ã¯ïŒ
- 8.8 ãŸãšã
1. ã¯ããã«
MySQLãæŽ»çšããéã«ããäžæããŒãã«ïŒTemporary TableïŒãã¯ãããŒã¿ã®äžæçãªä¿åãåŠçãè¡ãããã®äŸ¿å©ãªææ®µã§ããäžæããŒãã«ãå©çšããããšã§ãããŒã¿ãäžæçã«æ ŒçŽããè€éãªã¯ãšãªã®è² è·ã軜æžãããããããåŠçãå¹çåãããããããšãå¯èœã«ãªããŸãã
æ¬èšäºã§ã¯ãMySQLã®äžæããŒãã«ãšã¯äœãããã®çšéãã¡ãªããã«ã€ããŠè©³ãã解説ããŠãããŸãã
äžæããŒãã«ãšã¯ïŒ
äžæããŒãã«ïŒTemporary TableïŒãšã¯ãã»ãã·ã§ã³äžã®ã¿æå¹ãªããŒãã« ã®ããšãæããŸãã
éåžžã®ããŒãã«ãšç°ãªããããŒã¿ããŒã¹ã«æä¹
çã«ä¿åãããããšã¯ãªããã»ãã·ã§ã³ãçµäºãããšèªåçã«åé€ ãããŸãã
äžæããŒãã«ã®ç¹åŸŽããŸãšãããšã以äžã®ããã«ãªããŸãã
- ã»ãã·ã§ã³åäœã§ååšããïŒå¥ã®æ¥ç¶ããã¯ã¢ã¯ã»ã¹äžå¯ïŒ
- ããŒãã«äœæåŸã®ã»ãã·ã§ã³ãçµäºãããšãèªååé€ããã
- ååã®éåžžããŒãã«ãååšããŠããå¹²æžããã«äœ¿çšã§ãã
- ããã©ãŒãã³ã¹æ¹åã®ããã«äœ¿çšãããããšãå€ã
äžæããŒãã«ã¯ãããŒã¿åæãäžæçãªããŒã¿åŠçã«é©ããŠããããããåŠçãéèšåŠçã®è£å© ãšããŠå©çšãããããšãäžè¬çã§ãã
äžæããŒãã«ã䜿çšããã¡ãªãã
äžæããŒãã«ã掻çšããããšã§ãããŒã¿åŠçãå¹çåã§ããŸããããã§ã¯ãäž»ãªã¡ãªããã3ã€ç޹ä»ããŸãã
1. ã¯ãšãªã®ããã©ãŒãã³ã¹ãåäžããã
éåžžã倧éã®ããŒã¿ãæ±ãå Žåãè€æ°ã®JOINããµãã¯ãšãªãé§äœ¿ããããšã§åŠçãè€éåããããŒã¿ããŒã¹ã«è² è·ãããããŸããäžæããŒãã«ãå©çšããã°ãäºåã«ããŒã¿ããã£ã«ã¿ãªã³ã°ããŠä¿å ããã¯ãšãªã®å®è¡ãé«éåã§ããŸãã
2. ããŒã¿ã®äžæçãªä¿åã«æé©
ãããåŠçãããŒã¿å€æã®éãäžæçã«ããŒã¿ãæ ŒçŽããå¿ èŠãªåŠçãè¡ãã±ãŒã¹ããããŸããäžæããŒãã«ã䜿ãã°ãããŒã¿ãäžæçã«ä¿åããã¡ã¢ãªå ã§ã®é«éåŠçãå¯èœ ã«ãªããŸãã
3. æ¢åã®ããŒã¿ãå®å šã«ä¿ã€
æ¬çªç°å¢ã®ããŒã¿ãçŽæ¥æäœããã®ã¯ãªã¹ã¯ããããŸããäžæããŒãã«ã掻çšããã°ãæ¬çªããŒã¿ã倿Žããã«åŠçãè¡ãããšã©ãŒã®ãªã¹ã¯ãè»œæž ã§ããŸãã
ãŸãšã
MySQLã®äžæããŒãã«ã¯ãããŒã¿ã®äžæçãªä¿åãšåŠçãè¡ãããã®äŸ¿å©ãªããŒã«ã§ãã
- ã»ãã·ã§ã³åäœã§æå¹ ã§ãããã»ãã·ã§ã³çµäºæã«åé€ããã
- ããã©ãŒãã³ã¹æ¹åããããåŠçã«æå¹
- æ¬çªããŒã¿ã倿Žããã«å®å šã«ããŒã¿ãæäœã§ãã
2. äžæããŒãã«ã®åºæ¬
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã¯ãéåžžã®ããŒãã«ãšç°ãªããäžæçã«ããŒã¿ãæ ŒçŽããããã«å©çšãããŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãäžæããŒãã«ã®åºæ¬çãªæŠå¿µãçè§£ããããã«ããéåžžã®ããŒãã«ãšã®éããããå éšäžæããŒãã«ãšã®éããã«ã€ããŠè©³ãã解説ããŸãã
äžæããŒãã«ãšéåžžã®ããŒãã«ã®éã
äžæããŒãã«ãšéåžžã®ããŒãã«ã¯ãããŒã¿ã®ä¿åæéãã¢ã¯ã»ã¹ã®ä»çµã¿ ã«ãããŠå€§ããªéãããããŸãã以äžã®è¡šã«äž»ãªéãããŸãšããŸããã
é ç® | äžæããŒãã« | éåžžã®ããŒãã« |
---|---|---|
ååšæé | ã»ãã·ã§ã³ãçµäºãããšåé€ | æç€ºçã«åé€ãããŸã§ååš |
ã¢ã¯ã»ã¹ | ã»ãã·ã§ã³å ã®ã¿å©çšå¯èœïŒä»ã®æ¥ç¶ããã¯èŠããªãïŒ | ãã¹ãŠã®ã»ãã·ã§ã³ã§å ±æå¯èœ |
ç«¶å | åãååã®éåžžããŒãã«ãååšããŠããŠãå©çšå¯èœ | åãååã®ããŒãã«ã¯äœæäžå¯ |
ä¿åå | MEMORY ïŒããã©ã«ãïŒãŸã㯠InnoDB ã®äžæé å | ããŒã¿ããŒã¹ã®ã¹ãã¬ãŒãžã«ä¿å |
æ°žç¶æ§ | ãªãïŒã»ãã·ã§ã³çµäºã§åé€ïŒ | ããïŒããŒã¿ããŒã¹ãç¶æïŒ |
ãã€ã³ã
- äžæããŒãã«ã¯ ã»ãã·ã§ã³ããšã«ç¬ç« ããŠãããä»ã®ãŠãŒã¶ãŒããã¯èŠããªãã
- åãååã®éåžžããŒãã«ããã£ãŠãããšã©ãŒã«ãªããã«äœæã§ããã
CREATE TEMPORARY TABLE
ã䜿ã£ãŠæç€ºçã«äœæããã»ãã·ã§ã³ãçµäºãããšèªåçã«åé€ ãããã
äžæããŒãã«ãšå éšäžæããŒãã«ã®éã
MySQLã«ã¯ããŠãŒã¶ãŒãæç€ºçã«äœæãã ãäžæããŒãã«ã ãšã¯å¥ã«ãMySQLãšã³ãžã³ãèªåçã«äœæãã ãå éšäžæããŒãã«ã ããããŸãããã®2ã€ã¯äŒŒãŠããŸãããçšéãç®¡çæ¹æ³ãç°ãªããŸãã
é ç® | äžæããŒãã« | å éšäžæããŒãã« |
---|---|---|
äœææ¹æ³ | CREATE TEMPORARY TABLE ã䜿ã£ãŠæç€ºçã«äœæ | MySQLãèªåçã«äœæ |
å©çšç®ç | ãŠãŒã¶ãŒãç¹å®ã®åŠçã®ããã«äœæ | MySQLãè€éãªã¯ãšãªïŒGROUP BY, ORDER BYïŒãåŠçããããã«äœæ |
åç §å¯èœç¯å² | ã»ãã·ã§ã³å ã§ã®ã¿å©çšå¯èœ | ã¯ãšãªã®å®è¡äžã®ã¿æå¹ |
åé€ | ã»ãã·ã§ã³çµäºæã«åé€ããã | ã¯ãšãªå®äºåŸã«èªååé€ããã |
å éšäžæããŒãã«ãšã¯ïŒ
- MySQLã¯ãäžéšã®ã¯ãšãªïŒ
GROUP BY
ãORDER BY
ãDISTINCT
ãªã©ïŒãæé©åããããã«ãå éšçã«äžæããŒãã«ãäœæ ããã - ãšã³ããŠãŒã¶ãŒãçŽæ¥ç®¡çããããšã¯ã§ããªãïŒ
CREATE TEMPORARY TABLE
ã®ããã«æç€ºçã«äœæã¯ã§ããªãïŒã - ã¯ãšãªã®å®è¡æã«å¿ èŠã«å¿ããŠäœæãããã¯ãšãªãå®äºãããšèªåçã«åé€ ãããã
å éšäžæããŒãã«ã®çºçäŸ
以äžã®ãããªã¯ãšãªãå®è¡ãããšãMySQLã¯å éšçã«äžæããŒãã«ãäœæããŠåŠçãè¡ãããšããããŸãã
SELECT category, COUNT(*)
FROM products
GROUP BY category
ORDER BY COUNT(*) DESC;
ãã®å ŽåãMySQL㯠GROUP BY ã®çµæãäžæçã«ä¿åããããã®å
éšäžæããŒãã« ãäœæãã
æçµçãªçµæãèšç®ããããã«å©çšããŸãã
ãŸãšã
- äžæããŒãã«ã¯ããŠãŒã¶ãŒãæç€ºçã«äœæããäžæçãªããŒãã« ã§ãããã»ãã·ã§ã³ãçµäºãããšèªåçã«åé€ãããã
- éåžžã®ããŒãã«ãšã¯ç°ãªããä»ã®ã»ãã·ã§ã³ããã¢ã¯ã»ã¹ã§ããªãã
- å éšäžæããŒãã«ã¯ãMySQLãèªåçã«äœæã»åé€ããäžæçãªããŒãã« ã§ããŠãŒã¶ãŒãçŽæ¥æäœããããšã¯ã§ããªãã

3. äžæããŒãã«ã®äœææ¹æ³
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã¯ãCREATE TEMPORARY TABLE
æã䜿çšããŠäœæã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãäžæããŒãã«ã®åºæ¬çãªäœææ¹æ³ãããæ¢åããŒãã«ãåºã«ããäœææ¹æ³ãŸã§è©³ãã解説ããŸãã
äžæããŒãã«ã®åºæ¬çãªäœææ¹æ³
MySQLã§ã¯ãäžæããŒãã«ãäœæããããã« CREATE TEMPORARY TABLE
æã䜿çšããŸãã
åºæ¬æ§æ
CREATE TEMPORARY TABLE ããŒãã«å (
ã«ã©ã å ããŒã¿å å¶çŽ,
ã«ã©ã å ããŒã¿å å¶çŽ,
...
);
ãµã³ãã«ã³ãŒã
以äžã®SQLã¯ãusers_temp
ãšããäžæããŒãã«ãäœæããid
ïŒæŽæ°åïŒãname
ïŒæåååïŒãemail
ïŒæåååïŒã®3ã€ã®ã«ã©ã ãæãããäŸã§ãã
CREATE TEMPORARY TABLE users_temp (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
ãã®ããŒãã«ã¯ãã»ãã·ã§ã³ãçµäºãããšèªåçã«åé€ããããããæ°žç¶çãªããŒã¿ããŒã¹ã«ã¯åœ±é¿ãäžããŸããã
æ¢åããŒãã«ãåºã«ããäžæããŒãã«ã®äœæ
äžæããŒãã«ããŒãããäœæããã®ã§ã¯ãªããæ¢åã®ããŒãã«æ§é ãã³ããŒããŠäœæãã ããšãå¯èœã§ãã
CREATE TEMPORARY TABLE ... SELECT
ã䜿çšãã
MySQLã§ã¯ãSELECT
æã®çµæãããšã«äžæããŒãã«ãäœæããããšãã§ããŸãã
åºæ¬æ§æ
CREATE TEMPORARY TABLE äžæããŒãã«å
SELECT * FROM æ¢åããŒãã«å;
ãµã³ãã«ã³ãŒã
äŸãã°ãusers
ããŒãã«ã®ããŒã¿æ§é ãã³ããŒããæ°ããäžæããŒãã« users_temp
ãäœæããå Žåãæ¬¡ã®ããã«èšè¿°ããŸãã
CREATE TEMPORARY TABLE users_temp
SELECT * FROM users;
ãã®æ¹æ³ã§ã¯ãusers
ããŒãã«ã®ã«ã©ã æ§é ããã®ãŸãŸ users_temp
ã«åŒãç¶ãããŸãããPRIMARY KEY
ã INDEX
ãªã©ã®å¶çŽã¯ã³ããŒãããŸããã
ãããããŒãã«æ§é ã ããã³ããŒããŠããŒã¿ãå«ããããªãå Žåã¯ãWHERE 1=0
ã远å ããŸãã
CREATE TEMPORARY TABLE users_temp
SELECT * FROM users WHERE 1=0;
ãã®SQLã§ã¯ãusers
ããŒãã«ã®ã«ã©ã å®çŸ©ã¯ã³ããŒãããŸãããããŒã¿ã¯å«ãŸããŸããã
äžæããŒãã«ãäœæããéã®æ³šæç¹
1. äžæããŒãã«ã¯ã»ãã·ã§ã³åäœã§æå¹
- äžæããŒãã«ã¯ãäœæããã»ãã·ã§ã³å ã§ã®ã¿æå¹ã§ãã
- ä»ã®æ¥ç¶ãå¥ã®ãŠãŒã¶ãŒããã¯ã¢ã¯ã»ã¹ã§ããŸããã
2. åãååã®éåžžããŒãã«ãååšããŠããŠãåé¡ãªãäœæå¯èœ
- äŸãã°ãããŒã¿ããŒã¹ã«
users
ãšããéåžžã®ããŒãã«ããã£ãŠããåãååã®users
ãšããäžæããŒãã«ãäœæã§ããŸãã - ãã®å Žåãã»ãã·ã§ã³å ã§ã¯äžæããŒãã«ãåªå ãããéåžžããŒãã«ã¯èŠããªããªããŸãã
3. ã¹ãã¬ãŒãžãšã³ãžã³ã®åœ±é¿
- äžæããŒãã«ã¯ãããã©ã«ãã§
MEMORY
ãšã³ãžã³ã䜿çšãããŸãããããŒã¿éã倧ããå Žåã¯InnoDB
ã®äžæé åã«ä¿åãããããšããããŸãã MEMORY
ãšã³ãžã³ãæç€ºçã«æå®ããå Žåã¯ã以äžã®ããã«èšè¿°ããŸããCREATE TEMPORARY TABLE users_temp ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) ) ENGINE=MEMORY;
MEMORY
ãšã³ãžã³ã¯ãé«éã§ããããŒã¿ãµã€ãºã®å¶éãããããã倧éã®ããŒã¿ãæ±ãå Žåã¯InnoDB
ã®äœ¿çšãæ€èšããŸãããã
ãŸãšã
- äžæããŒãã«ã¯
CREATE TEMPORARY TABLE
ã䜿ã£ãŠäœæããã - æ¢åã®ããŒãã«ãã³ããŒããŠäžæããŒãã«ãäœæããããšãå¯èœïŒ
SELECT * FROM
ã䜿çšïŒã MEMORY
ãšã³ãžã³ã䜿çšãããšé«éåŠçãå¯èœã ãã倧éããŒã¿ã«ã¯InnoDB
ãé©ããŠããã- äžæããŒãã«ã¯ã»ãã·ã§ã³åäœã§ç®¡çãããã»ãã·ã§ã³çµäºæã«èªåçã«åé€ãããã
4. äžæããŒãã«ã®äœ¿ç𿹿³
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã¯ãéåžžã®ããŒãã«ãšåæ§ã« ããŒã¿ã®æ¿å ¥ã»æŽæ°ã»åé€ã»åç § ãªã©ã®æäœãè¡ãããšãã§ããŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãããããã®æäœæ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
ããŒã¿ã®æ¿å ¥
äžæããŒãã«ã«ããŒã¿ã远å ããã«ã¯ãéåžžã® INSERT INTO
æã䜿çšããŸãã
åºæ¬æ§æ
INSERT INTO äžæããŒãã«å (ã«ã©ã å1, ã«ã©ã å2, ...)
VALUES (å€1, å€2, ...);
ãµã³ãã«ã³ãŒã
以äžã®SQLã¯ãusers_temp
ãšããäžæããŒãã«ã«ããŒã¿ãæ¿å
¥ããäŸã§ãã
INSERT INTO users_temp (id, name, email)
VALUES (1, 'å±±ç° å€ªé', 'taro@example.com');
ãŸããæ¢åã®ããŒãã«ããããŒã¿ãã³ããŒããŠæ¿å ¥ããããšãå¯èœã§ãã
INSERT INTO users_temp (id, name, email)
SELECT id, name, email FROM users WHERE age >= 18;
ãã®SQLã§ã¯ãusers
ããŒãã«ãã 18æ³ä»¥äžã®ãŠãŒã¶ãŒ ã®ããŒã¿ãäžæããŒãã«ã«æ¿å
¥ããŠããŸãã
ããŒã¿ã®æŽæ°
äžæããŒãã«å
ã®ããŒã¿ã倿Žããã«ã¯ãéåžžã® UPDATE
æã䜿çšããŸãã
åºæ¬æ§æ
UPDATE äžæããŒãã«å
SET ã«ã©ã å = æ°ããå€
WHERE æ¡ä»¶;
ãµã³ãã«ã³ãŒã
äŸãã°ãusers_temp
ããŒãã«å
ã® id=1
ã®ãŠãŒã¶ãŒã®ååã倿Žããå Žåã以äžã®ããã«èšè¿°ããŸãã
UPDATE users_temp
SET name = 'äœè€ äžé'
WHERE id = 1;
ããŒã¿ã®åé€
äžèŠã«ãªã£ãããŒã¿ãåé€ããã«ã¯ãDELETE
æã䜿çšããŸãã
åºæ¬æ§æ
DELETE FROM äžæããŒãã«å WHERE æ¡ä»¶;
ãµã³ãã«ã³ãŒã
äŸãã°ãusers_temp
ããŒãã«å
ã® id=1
ã®ããŒã¿ãåé€ããå Žåã以äžã®SQLãå®è¡ããŸãã
DELETE FROM users_temp WHERE id = 1;
ããŒãã«å
ã® ãã¹ãŠã®ããŒã¿ãåé€ ããå Žåã¯ãWHERE
æ¡ä»¶ãçç¥ã§ããŸãã
DELETE FROM users_temp;
ãªããDELETE
æã䜿çšããŠããããŒãã«èªäœã¯åé€ããããããŒã¿ã®ã¿ãåé€ãããŸãã
ããŒã¿ã®åç §
äžæããŒãã«ã«æ ŒçŽãããŠããããŒã¿ãååŸããã«ã¯ãSELECT
æã䜿çšããŸãã
åºæ¬æ§æ
SELECT ã«ã©ã å FROM äžæããŒãã«å WHERE æ¡ä»¶;
ãµã³ãã«ã³ãŒã
äŸãã°ãusers_temp
ããŒãã«å
ã®ãã¹ãŠã®ããŒã¿ãååŸããå Žåã以äžã®SQLãå®è¡ããŸãã
SELECT * FROM users_temp;
ç¹å®ã®æ¡ä»¶ã«äžèŽããããŒã¿ãååŸããå Žåã¯ãWHERE
å¥ã䜿çšããŸãã
SELECT * FROM users_temp WHERE email LIKE '%@example.com';
ãã®SQLã§ã¯ã@example.com
ãå«ãã¡ãŒã«ã¢ãã¬ã¹ã®ããŒã¿ã®ã¿ãååŸããŸãã
äžæããŒãã«ã®äœ¿çšæã®æ³šæç¹
1. ã»ãã·ã§ã³ãçµäºãããšããŒã¿ãåé€ããã
- äžæããŒãã«ã¯ ã»ãã·ã§ã³åäœ ã§ç®¡çãããŠãããã»ãã·ã§ã³ãçµäºãããšããŒã¿ãåé€ãããã
- é·æéã®åŠçãè¡ãå Žåã¯ã宿çã«ããŒã¿ãããã¯ã¢ããããããšãæšå¥šãããã
2. åãååã®äžæããŒãã«ãæ¢ã«ååšãããšãšã©ãŒãçºçãã
CREATE TEMPORARY TABLE
ã§ åãååã®äžæããŒãã«ãäœæããããšãããšãšã©ãŒ ã«ãªãã- ãšã©ãŒåé¿ç ãšããŠã
DROP TEMPORARY TABLE IF EXISTS
ãäºåã«å®è¡ãããšãããDROP TEMPORARY TABLE IF EXISTS users_temp; CREATE TEMPORARY TABLE users_temp (...);
3. ã¹ãã¬ãŒãžãšã³ãžã³ã«ããå¶çŽããã
- äžæããŒãã«ã¯
MEMORY
ãšã³ãžã³ãããã©ã«ã ã ããããŒã¿éãå€ããšèªåçã«InnoDB
ã®äžæé åã«ä¿åãããã - 倧éããŒã¿ãæ±ãå Žåã¯ã
InnoDB
ã®äžæããŒãã«ãå©çšããã®ãæšå¥šãããã
ãŸãšã
- äžæããŒãã«ã¯éåžžã®ããŒãã«ãšåãããã« ããŒã¿ã®æ¿å ¥ã»æŽæ°ã»åé€ã»åç § ãè¡ãããšãã§ããã
- ã»ãã·ã§ã³ãçµäºãããšãäžæããŒãã«ã®ããŒã¿ãèªåçã«åé€ãããã
DROP TEMPORARY TABLE IF EXISTS
ãäºåã«å®è¡ããããšã§ãååã®ããŒãã«äœæãšã©ãŒãåé¿ã§ããã- 倧éããŒã¿ãæ±ãå Žåã¯
InnoDB
ã®äžæããŒãã«ãå©çšããã®ãæšå¥šãããã
5. äžæããŒãã«ã®ç®¡çãšåé€
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã¯ãã»ãã·ã§ã³ãçµäºãããšèªåçã«åé€ãããŸããããããå Žåã«ãã£ãŠã¯æç€ºçã«åé€ããå¿ èŠãããããšããããŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãäžæããŒãã«ã®ç®¡çæ¹æ³ãšå逿¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
äžæããŒãã«ã®å逿¹æ³
äžæããŒãã«ãæç€ºçã«åé€ããã«ã¯ãDROP TEMPORARY TABLE
æã䜿çšããŸãã
åºæ¬æ§æ
DROP TEMPORARY TABLE ããŒãã«å;
ãµã³ãã«ã³ãŒã
äŸãã°ãusers_temp
ãšããäžæããŒãã«ãåé€ããå Žåã¯ã以äžã®SQLãå®è¡ããŸãã
DROP TEMPORARY TABLE users_temp;
ãã®SQLãå®è¡ãããšãusers_temp
ããŒãã«ã¯åé€ãããã»ãã·ã§ã³å
ã§åå©çšã§ããªããªããŸãã
ã»ãã·ã§ã³çµäºæã®èªååé€
äžæããŒãã«ã¯ãã»ãã·ã§ã³ãçµäºãããšèªåçã«åé€ãããŸãã
èªååé€ã®ä»çµã¿
CREATE TEMPORARY TABLE
ã§äžæããŒãã«ãäœæ- ã»ãã·ã§ã³ãç¶æãããŠããéã¯ããŒã¿ãæäœå¯èœ
- ã»ãã·ã§ã³ïŒæ¥ç¶ïŒãåæããããšãäžæããŒãã«ã¯èªåçã«åé€
ãã ãã以äžã®ã±ãŒã¹ã§ã¯æ³šæãå¿ èŠã§ãã
- ã»ãã·ã§ã³ãé·æéç¶æãããå Žå
â äžèŠãªäžæããŒãã«ãã¡ã¢ãªãå æããå¯èœæ§ããããããé©å®DROP TEMPORARY TABLE
ãå®è¡ããã®ãæšå¥šãããã - 倧éã®ããŒã¿ãæ±ãå Žå
â ã¹ãã¬ãŒãžã®å§è¿«ãé¿ãããããé©åã«ããŒãã«ãåé€ããããšãéèŠã
DROP TEMPORARY TABLE IF EXISTS
ã®æŽ»çš
äžæããŒãã«ãåé€ããéãååšããªãå Žåã«ãšã©ãŒãçºçããããšãé²ãããã«ãIF EXISTS
ãå©çšãããšäŸ¿å©ã§ãã
åºæ¬æ§æ
DROP TEMPORARY TABLE IF EXISTS ããŒãã«å;
ãµã³ãã«ã³ãŒã
DROP TEMPORARY TABLE IF EXISTS users_temp;
ãã®SQLãå®è¡ãããšãusers_temp
ãååšããå Žåã¯åé€ãããååšããªãå Žåã§ããšã©ãŒã«ãªããã«ã¹ã«ãŒãããŸãã
ãããããšã©ãŒãšå¯ŸåŠæ³
ãšã©ãŒ1ïŒãTable not foundã
çºçæ¡ä»¶:
DROP TEMPORARY TABLE
ã§ãååšããªãããŒãã«ãåé€ããããšããå Žå- äžæããŒãã«ã¯ã»ãã·ã§ã³åäœã§ç®¡çããããããå¥ã®ã»ãã·ã§ã³ããã¯åé€ã§ããªã
解決ç:
IF EXISTS
ã远å ããããšã§ãšã©ãŒãé²ã
DROP TEMPORARY TABLE IF EXISTS users_temp;
- æ£ããã»ãã·ã§ã³å ã§åé€ãå®è¡ãã
ãšã©ãŒ2ïŒãTable already existsã
çºçæ¡ä»¶:
- åãååã®äžæããŒãã«ãäœæããããšããããæ¢ã«ååšããŠãã
解決ç:
- äºåã«
DROP TEMPORARY TABLE IF EXISTS
ãå®è¡ãã
DROP TEMPORARY TABLE IF EXISTS users_temp;
CREATE TEMPORARY TABLE users_temp (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
äžæããŒãã«ç®¡çã®ãã¹ããã©ã¯ãã£ã¹
- äžèŠã«ãªã£ããæç€ºçã«åé€ãã
DROP TEMPORARY TABLE
ãé©å®å®è¡ããäžèŠãªããŒãã«ãè§£æŸããã
- ãšã©ãŒåé¿ã®ããã«
IF EXISTS
ãæŽ»çšãã
DROP TEMPORARY TABLE IF EXISTS
ã䜿ãããšã§ãååšããªãããŒãã«ã®å逿ã«ãšã©ãŒãé²ãã
- ã»ãã·ã§ã³ã®ç®¡çãæèãã
- ã»ãã·ã§ã³ãé·æéç¶æãããå ŽåãäžæããŒãã«ãã¡ã¢ãªãå§è¿«ããå¯èœæ§ããããããé©å®åé€ããã
- ã¹ãã¬ãŒãžãšã³ãžã³ã®åœ±é¿ãçè§£ãã
MEMORY
ãšã³ãžã³ã䜿çšãããšé«éã ããããŒã¿ãµã€ãºã«å¶éããããInnoDB
ãå©çšããå Žåã¯ããã£ã¹ã¯ã¹ããŒã¹ãèæ ®ããå¿ èŠãããã
ãŸãšã
- äžæããŒãã«ã¯
DROP TEMPORARY TABLE
ã§æç€ºçã«åé€ã§ããã - ã»ãã·ã§ã³çµäºæã«ã¯ãèªåçã«åé€ãããããé·æéã®ã»ãã·ã§ã³ã§ã¯æååé€ãæšå¥šãããã
DROP TEMPORARY TABLE IF EXISTS
ã䜿ãããšã§ãå逿ã®ãšã©ãŒãé²ããã- ãTable not foundããšã©ãŒããTable already existsããšã©ãŒã«å¯ŸåŠããæ¹æ³ãç¥ã£ãŠãããšäŸ¿å©ã
6. äžæããŒãã«ã®æŽ»çšäŸ
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã¯ãããŒã¿ã®äžæçãªä¿åãåŠçãå¹çåããããã«æŽ»çšãããŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãäžæããŒãã«ãå©çšãã代衚çãªã·ããªãªã玹ä»ããããããã®å®è£ æ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
1. ããŒã¿éèšæã®äžéããŒãã«ãšããŠã®å©çš
ããŒã¿åæãã¬ããŒãäœæã®éã倧éã®ããŒã¿ãçŽæ¥åŠçãããšã¯ãšãªã®å®è¡é床ãé ããªãããšããããŸããäžæããŒãã«ãå©çšããã°ãäžæçã«ããŒã¿ãæŽçããŠããåŠçãè¡ãããšã§ãããã©ãŒãã³ã¹ãåäžãããããšãå¯èœã§ãã
ã·ããªãª
sales
ããŒãã«ã«ã¯1幎éã®è²©å£²ããŒã¿ãæ ŒçŽãããŠããã- æããšã®å£²äžåèšãèšç®ããããã«è©³çްãªåæãè¡ãããã
å®è£ äŸ
CREATE TEMPORARY TABLE monthly_sales (
month_year DATE,
total_sales DECIMAL(10,2)
);
INSERT INTO monthly_sales (month_year, total_sales)
SELECT DATE_FORMAT(sale_date, '%Y-%m-01') AS month_year, SUM(amount)
FROM sales
GROUP BY month_year;
SELECT * FROM monthly_sales;
2. ãããåŠçã«ãããäžæããŒã¿ã®ä¿æ
äžæããŒãã«ã¯ããããåŠçïŒããŒã¿ã®äžæ¬åŠçïŒãè¡ãéã«ã圹ç«ã¡ãŸããäŸãã°ãããŒã¿ãäžå®æ¡ä»¶ã§ãã£ã«ã¿ãªã³ã°ããåŠç察象ã®ããŒã¿ã®ã¿ãäžæããŒãã«ã«æ ŒçŽããŠåŠç ããããšã§ãå¹ççã«ããŒã¿ãæäœã§ããŸãã
ã·ããªãª
users
ããŒãã«ã®äžãããéå»1幎éã«ãã°ã€ã³ãããŠãŒã¶ãŒ ã®ã¿ã察象ã«ã¡ãŒã«ãéä¿¡ããã- äºåã«å¯Ÿè±¡ããŒã¿ãäžæããŒãã«ã«ä¿åããé æ¬¡åŠçãè¡ãã
å®è£ äŸ
CREATE TEMPORARY TABLE active_users (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(255)
);
INSERT INTO active_users
SELECT id, name, email FROM users WHERE last_login >= NOW() - INTERVAL 1 YEAR;
SELECT * FROM active_users;
3. è€éãªã¯ãšãªã®ç°¡ç¥å
è€éãªã¯ãšãªãçŽæ¥å®è¡ãããšãããã©ãŒãã³ã¹ãäœäžãããããã³ãŒãã®å¯èªæ§ãæªããªããŸããäžæããŒãã«ãå©çšããããšã§ããµãã¯ãšãªãæžãããã¯ãšãªãã·ã³ãã«ã«ãã ããšãå¯èœã§ãã
ã·ããªãª
orders
ããŒãã«ã®äžããã売äžããã10ã®åå ãååŸããã- ãµãã¯ãšãªã䜿ããã«äžæããŒãã«ã掻çšããã
å®è£ äŸ
CREATE TEMPORARY TABLE top_products AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
SELECT * FROM top_products;
4. ããŒã«ããã¯äžèŠãªäžæçãªããŒãã«æäœ
äžæããŒãã«ã¯ ã»ãã·ã§ã³åäœã§ç®¡çãããããããã©ã³ã¶ã¯ã·ã§ã³ã®åœ±é¿ãåããŸããããã®ãããããŒã«ããã¯ãäžèŠãªäžæããŒã¿ã®ç®¡çã«é©ããŠããŸãã
ã·ããªãª
- ãã©ã³ã¶ã¯ã·ã§ã³åŠçãè¡ãéã«ãäžæçãªèšç®çµæãä¿æãããã
- ãããããšã©ãŒæã«äžæããŒã¿ãããŒã«ããã¯ãããã®ã¯é¿ãããã
å®è£ äŸ
START TRANSACTION;
CREATE TEMPORARY TABLE temp_results (
user_id INT,
score INT
);
INSERT INTO temp_results
SELECT user_id, SUM(points) FROM game_scores GROUP BY user_id;
-- ãã©ã³ã¶ã¯ã·ã§ã³ãã³ããããã
COMMIT;
SELECT * FROM temp_results;
ãŸãšã
- äžæããŒãã«ã¯ãããŒã¿éèšã»ãããåŠçã»ã¯ãšãªã®ç°¡ç¥å ãªã©ãããŸããŸãªçšéã§æŽ»çšã§ããã
- äžéããŒãã«ãšããŠã®å©çš ã§ã¯ãããã©ãŒãã³ã¹åäžãããŒã¿æŽçã«åœ¹ç«ã€ã
- ãããåŠç ã§ã¯ãäºåã«å¯Ÿè±¡ããŒã¿ãæœåºããäžèŠãªããŒã¿ã®åŠçãçç¥ã§ããã
- è€éãªã¯ãšãªã®ç°¡ç¥å ã§ã¯ããµãã¯ãšãªãæžãããSQLã®å¯èªæ§ãåäžã§ããã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®åœ±é¿ãåããªã ãããããŒã«ããã¯äžèŠãªããŒã¿åŠçã«ãé©ããŠããã
7. äžæããŒãã«ã®ä»£æ¿ææ®µãšå¶çŽ
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã¯äŸ¿å©ãªæ©èœã§ãããããã€ãã®å¶çŽããããŸããå Žåã«ãã£ãŠã¯ããã¥ãŒããµãã¯ãšãªãªã©ã®ä»£æ¿ææ®µãæ€èšããããšã§ãããå¹ççã«ããŒã¿ãåŠçã§ããããšããããŸããæ¬ã»ã¯ã·ã§ã³ã§ã¯ãäžæããŒãã«ã®äž»ãªå¶çŽãšããããåé¿ããããã®ä»£æ¿ææ®µã«ã€ããŠè§£èª¬ããŸãã
äžæããŒãã«ã®äž»ãªå¶çŽ
äžæããŒãã«ã«ã¯ãéåžžã®ããŒãã«ã«ã¯ãªãããã€ãã®å¶çŽããããŸããããããçè§£ããããšã§ãé©åãªãŠãŒã¹ã±ãŒã¹ãèŠæ¥µããããšãã§ããŸãã
1. ã»ãã·ã§ã³åäœã§ç®¡çããã
- äžæããŒãã«ã¯äœæãããã»ãã·ã§ã³å ã§ã®ã¿æå¹ã§ãããä»ã®æ¥ç¶ããŠãŒã¶ãŒããã¯ã¢ã¯ã»ã¹ã§ããªãã
- åãååã®éåžžããŒãã«ãååšããŠããåãã»ãã·ã§ã³å ã§ã¯äžæããŒãã«ãåªå ãããïŒéåžžããŒãã«ã«ã¯ã¢ã¯ã»ã¹ã§ããªãïŒã
2. äžæããŒãã«ã®ã¹ããŒãã¯ä¿åãããªã
- éåžžã®ããŒãã«ã¯
SHOW CREATE TABLE
ã§ã¹ããŒããååŸã§ããããäžæããŒãã«ã¯ ã»ãã·ã§ã³çµäºãšãšãã«æ¶æ» ãããããã¹ããŒãæ å ±ãä¿æãããªãã
3. ã€ã³ããã¯ã¹ã®å¶é
CREATE TEMPORARY TABLE
ã§PRIMARY KEY
ãINDEX
ãæå®ããªããšãèªåçã«ã¯äœæãããªãã- äžæããŒãã«ã«ã€ã³ããã¯ã¹ãä»äžããå Žåã¯ãæåã§äœæããå¿ èŠãããã
4. ããã©ã«ãã®ã¹ãã¬ãŒãžãšã³ãžã³ã¯ MEMORY
MEMORY
ãšã³ãžã³ã§ã¯ ããŒã¿éãå€ããªããšããã£ã¹ã¯ãžã®ã¹ã¯ãããçºçããããã©ãŒãã³ã¹ãäœäžãããInnoDB
ãæå®ããã°å€§å®¹éããŒã¿ã«å¯Ÿå¿ã§ãããããã®åãã£ã¹ã¯ã®äœ¿çšéãå¢å ããã
5. ãã©ã³ã¶ã¯ã·ã§ã³ã®åœ±é¿ãåããªã
- äžæããŒãã«ã¯
ROLLBACK
ããŠã圱é¿ãåããªãã - ãã®ããããã©ã³ã¶ã¯ã·ã§ã³ã®äžè²«æ§ãä¿ã€å¿ èŠãããåŠçã«ã¯é©ããŠããªãã
äžæããŒãã«ã®ä»£æ¿ææ®µ
äžèšã®å¶çŽãåé¿ããããã«ãäžæããŒãã«ã®ä»£ããã« ãã¥ãŒïŒViewïŒããµãã¯ãšãª ãæŽ»çšããããšã§ãããæè»ã«ããŒã¿åŠçãè¡ãããšãå¯èœã§ãã
1. ãã¥ãŒïŒViewïŒãå©çšãã
ãã¥ãŒïŒViewïŒã¯ãäžæããŒãã«ãšäŒŒãããã«äžæçãªããŒã¿åç §ãè¡ãææ®µãšããŠå©çšã§ããŸãããã¥ãŒã¯ä»®æ³ããŒãã«ãšããŠåäœããããŒã¿ã®äžæçãªä¿åãå¿ èŠãšããªã ãããã¹ãã¬ãŒãžã®å¶çŽãåé¿ã§ããŸãã
ãã¥ãŒã®äœæ
CREATE VIEW active_users AS
SELECT id, name, email FROM users WHERE last_login >= NOW() - INTERVAL 1 YEAR;
ãã¥ãŒã®å©çš
SELECT * FROM active_users;
ãã¥ãŒã䜿ãã¡ãªãã
â
ã¹ãã¬ãŒãžãæ¶è²»ããªãïŒããŒã¿ã¯çŽæ¥åç
§ããããããäžæçã«ä¿åããå¿
èŠããªãïŒ
â
ã»ãã·ã§ã³ã«äŸåããªãïŒä»ã®ãŠãŒã¶ãŒãæ¥ç¶ãããå©çšå¯èœïŒ
â
ã¹ããŒãã®ç¶æãå¯èœïŒãã¥ãŒã¯ SHOW CREATE VIEW
ã§å®çŸ©ã確èªã§ããïŒ
ãã¥ãŒã®ãã¡ãªãã
â æŽæ°ãé£ããïŒãã¥ãŒãçŽæ¥ INSERT
ã UPDATE
ããããšã¯å¶éãããïŒ
â å€§èŠæš¡ãªããŒã¿ãæ±ãå Žåãããã©ãŒãã³ã¹ãäœäžãã
2. ãµãã¯ãšãªãå©çšãã
äžæããŒãã«ã䜿ããã«ãäžæçãªããŒã¿åŠçãè¡ãæ¹æ³ãšã㊠ãµãã¯ãšãª ãæŽ»çšããããšãå¯èœã§ãã
äžæããŒãã«ã䜿ãå Žå
CREATE TEMPORARY TABLE top_products AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
SELECT * FROM top_products;
ãµãã¯ãšãªã䜿ãå Žå
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
ãµãã¯ãšãªã䜿ãã¡ãªãã
â
äžæããŒãã«ãäœæããã«æžããããããã©ãŒãã³ã¹ãåäžãã
â
ã¹ãã¬ãŒãžãæ¶è²»ããªã
â
ã»ãã·ã§ã³ã«äŸåããããã€ã§ãå®è¡å¯èœ
ãµãã¯ãšãªã®ãã¡ãªãã
â è€éãªã¯ãšãªã®å Žåãå¯èªæ§ãäœäžãã
â ããŒã¿ã®åå©çšãé£ããïŒåãããŒã¿ãäœåºŠãåç
§ããå¿
èŠãããïŒ
3. å ±éããŒãã«åŒïŒWITHå¥ïŒãå©çšãã
MySQL 8.0 以éã§ã¯ãå ±éããŒãã«åŒïŒCTE: Common Table ExpressionsïŒ ãå©çšããããšã§ãäžæããŒãã«ãäœæããã«ããŒã¿ãäžæçã«æ±ãããšãã§ããŸãã
CTEã䜿ã£ãäŸ
WITH top_products AS (
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10
)
SELECT * FROM top_products;
CTEã䜿ãã¡ãªãã
â
ã³ãŒãã®å¯èªæ§ãåäžããïŒãµãã¯ãšãªãããèŠãããïŒ
â
ããã©ãŒãã³ã¹ãæé©åã§ããïŒäžæããŒãã«ãªãã§äžæçãªããŒã¿ãæ±ããïŒ
CTEã®ãã¡ãªãã
â MySQL 5.x ã§ã¯äœ¿çšã§ããªãïŒMySQL 8.0 以éã§ã®ã¿å¯Ÿå¿ïŒ
ãŸãšã
æ¹æ³ | ã¡ãªãã | ãã¡ãªãã |
---|---|---|
äžæããŒãã« | ã»ãã·ã§ã³å ã§ã®ããŒã¿åŠçã«é©ããŠãã | ã¹ãã¬ãŒãžãæ¶è²»ããã»ãã·ã§ã³çµäºæã«æ¶ãã |
ãã¥ãŒïŒViewïŒ | ã¹ãã¬ãŒãžäžèŠãã»ãã·ã§ã³ã«äŸåããªã | æŽæ°ãé£ãããããã©ãŒãã³ã¹äœäžã®å¯èœæ§ |
ãµãã¯ãšãª | ã¹ãã¬ãŒãžäžèŠãã·ã³ãã« | åå©çšãé£ãããå¯èªæ§ãäžãã |
CTEïŒWITHå¥ïŒ | ã³ãŒãã®å¯èªæ§åäžãããã©ãŒãã³ã¹æé©å | MySQL 8.0 以éã§ã®ã¿å©çšå¯èœ |
8. FAQïŒãããã質åïŒ
MySQLã®äžæããŒãã«ïŒTemporary TableïŒã«é¢ãããããã質åããŸãšããŸãããäžæããŒãã«ã®åäœãå¶éã«ã€ããŠçåãæã€æ¹ã®åèã«ãªãã°ãšæããŸãã
1. äžæããŒãã«ã¯ä»ã®ã»ãã·ã§ã³ããåç §ã§ããŸããïŒ
ããããåç
§ã§ããŸããã
äžæããŒãã«ã¯ãäœæãããã»ãã·ã§ã³å
ã§ã®ã¿å©çšå¯èœ ã§ããä»ã®ã»ãã·ã§ã³ããã¯ã¢ã¯ã»ã¹ã§ãããå¥ã®ãŠãŒã¶ãŒãåãååã®äžæããŒãã«ãäœæããŠããããããã®ã»ãã·ã§ã³ã§ç¬ç«ããããŒãã«ãšããŠæ±ãããŸãã
2. äžæããŒãã«ã®äœæã«å¿ èŠãªæš©éã¯ïŒ
äžæããŒãã«ãäœæããã«ã¯ãããŒã¿ããŒã¹ã«å¯Ÿãã CREATE TEMPORARY TABLES
æš©é ãå¿
èŠã§ãã
ãŠãŒã¶ãŒã«æš©éãä»äžããã«ã¯ã以äžã®SQLãå®è¡ããŸãã
GRANT CREATE TEMPORARY TABLES ON ããŒã¿ããŒã¹å.* TO 'ãŠãŒã¶ãŒå'@'ãã¹ã';
SHOW GRANTS
ã³ãã³ãã§ãçŸåšã®æš©éã確èªããããšãã§ããŸãã
SHOW GRANTS FOR 'ãŠãŒã¶ãŒå'@'ãã¹ã';
3. äžæããŒãã«ã¯ãã£ã¹ã¯å®¹éã«åœ±é¿ããŸããïŒ
ã¯ãã圱é¿ããŸãã
MySQLã®äžæããŒãã«ã¯ãããã©ã«ãã§ã¯ MEMORY
ãšã³ãžã³ã䜿çšããŸãããããŒã¿ãµã€ãºãäžå®ä»¥äžã«éãããš InnoDB
ã®äžæé åã«ä¿åãããŸãã
倧éã®ããŒã¿ãæ±ãå ŽåãäžæããŒãã«ããã£ã¹ã¯ãå§è¿«ããå¯èœæ§ããããããäžèŠã«ãªã£ããæç€ºçã«åé€ããããšãæšå¥š ããŸãã
DROP TEMPORARY TABLE IF EXISTS ããŒãã«å;
ãŸãããã£ã¹ã¯ãžã®åœ±é¿ãæå°éã«æãããããããŒã¿éãå€ãå Žå㯠MEMORY
ã§ã¯ãªã InnoDB
ã§äžæããŒãã«ãäœæãããšè¯ãã§ãããã
CREATE TEMPORARY TABLE ããŒãã«å (
ã«ã©ã 1 ããŒã¿å,
ã«ã©ã 2 ããŒã¿å
) ENGINE=InnoDB;
4. äžæããŒãã«ãšå éšäžæããŒãã«ã®éãã¯ïŒ
é ç® | äžæããŒãã« | å éšäžæããŒãã« |
---|---|---|
äœææ¹æ³ | ãŠãŒã¶ãŒã CREATE TEMPORARY TABLE ã§äœæ | MySQLã GROUP BY ãªã©ã®åŠçæã«èªåäœæ |
åç §å¯èœç¯å² | äœæããã»ãã·ã§ã³å ã®ã¿ | ã¯ãšãªã®å®è¡äžã®ã¿ |
åé€ | DROP TEMPORARY TABLE ã§æç€ºçã«åé€ | ã¯ãšãªå®äºæã«èªååé€ |
5. äžæããŒãã«ã¯ã¹ã¬ããéã§å ±æã§ããŸããïŒ
ããããã§ããŸããã
äžæããŒãã«ã¯ äœæããã¹ã¬ããïŒã»ãã·ã§ã³ïŒå
ã§ã®ã¿æå¹ ã§ãããä»ã®ã¹ã¬ãããããã»ã¹ããã¯ã¢ã¯ã»ã¹ã§ããŸããã
ãã®å¶éãåé¿ãããå Žåã¯ãäžæããŒãã«ã§ã¯ãªããéåžžã®ããŒãã«ãäœæããå¿ èŠããããŸãã
CREATE TABLE shared_temp_table (
id INT PRIMARY KEY,
data VARCHAR(255)
);
6. äžæããŒãã«ã䜿ããšããã©ãŒãã³ã¹ãèœã¡ãããšã¯ãããŸããïŒ
ã¯ããå Žåã«ãã£ãŠã¯ããã©ãŒãã³ã¹ãäœäžããããšããããŸãã
ç¹ã«ã以äžã®ã±ãŒã¹ã§ã¯æ³šæãå¿
èŠã§ãã
- ããŒã¿éãå€ãããå Žå
MEMORY
ãšã³ãžã³ã¯ããŒã¿ãµã€ãºã®å¶éããããäžå®ä»¥äžã«ãªããšInnoDB
ã«ã¹ã¯ãããããããã©ãŒãã³ã¹ãäœäž ããŸãã- 察ç:
MEMORY
ãšã³ãžã³ã®å¶éãè¶ ããå Žåã¯ãæåããInnoDB
ã§äœæããã - é©åãªã€ã³ããã¯ã¹ãèšå®ãããŠããªãå Žå
CREATE TEMPORARY TABLE ... SELECT
ã§äœæããããŒãã«ã«ã¯ ã€ã³ããã¯ã¹ãã³ããŒãããªã ãããæ€çŽ¢ãé ããªãããšããããŸãã- 察ç: å¿
èŠã«å¿ããŠ
ALTER TABLE
ã§ã€ã³ããã¯ã¹ã远å ããã
ALTER TABLE äžæããŒãã«å ADD INDEX (ã«ã©ã å);
7. äžæããŒãã«ã®ããã©ãŒãã³ã¹ãæ¹åããæ¹æ³ã¯ïŒ
äžæããŒãã«ã®ããã©ãŒãã³ã¹ãåäžãããããã«ã¯ã以äžã®æ¹æ³ãæå¹ã§ãã
â
MEMORY
ãšã³ãžã³ãå©çšããïŒå°èŠæš¡ãªããŒã¿ãªãé«éïŒ
CREATE TEMPORARY TABLE ããŒãã«å (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=MEMORY;
â å¿ èŠãªã«ã©ã ã®ã¿éžæããïŒäžèŠãªã«ã©ã ãçç¥ïŒ
CREATE TEMPORARY TABLE users_temp AS
SELECT id, name FROM users;
â é©åãªã€ã³ããã¯ã¹ãèšå®ããïŒæ€çŽ¢ãé«éåïŒ
ALTER TABLE users_temp ADD INDEX (name);
â äžèŠã«ãªã£ããããã«åé€ããïŒã¡ã¢ãªãè§£æŸïŒ
DROP TEMPORARY TABLE IF EXISTS users_temp;
ãŸãšã
- äžæããŒãã«ã¯ä»ã®ã»ãã·ã§ã³ãã¹ã¬ããããã¯åç §ã§ããªã
- äœæã«ã¯
CREATE TEMPORARY TABLES
æš©éãå¿ èŠ - ããŒã¿ãå€ããããš
MEMORY
ããInnoDB
ã«ã¹ã¯ãããããããã©ãŒãã³ã¹ãäœäžãã - é©åãªã€ã³ããã¯ã¹ãèšå®ããããšã§ã¯ãšãªã®é«éåãå¯èœ
- äžèŠãªäžæããŒãã«ã¯
DROP TEMPORARY TABLE
ã§åé€ããã®ãæšå¥š
ããã§ãMySQLã®äžæããŒãã«ã«é¢ããåºæ¬çãªç¥èããæŽ»ç𿹿³ãå¶çŽãä»£æ¿ææ®µããããã質åãŸã§ã詳ãã解説ããŸããã
äžæããŒãã«ãé©åã«æŽ»çšããããšã§ãããŒã¿åŠçã®å¹çã倧å¹
ã«åäžãããããšãã§ããŸãã