ã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ã®è€éããæ¢æ±ããŸããããã¯ãããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãæé©åããè€éãªã·ã¹ãã ã§ã®å¹ççãªããŒã¿æ€çŽ¢ãä¿èšŒããããã®éèŠãªæè¡ã§ãã
ã¯ãšãªæé©åïŒã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ã®è©³çް
ããŒã¿ããŒã¹ã®äžçã§ã¯ãå¹ççãªã¯ãšãªå®è¡ãæãéèŠã§ããããŒã¿ã»ãããæ¡å€§ããã¯ãšãªãããè€éã«ãªãã«ã€ããŠãé«åºŠãªã¯ãšãªæé©åæè¡ã®å¿ èŠæ§ããŸããŸãéèŠã«ãªããŸããã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ïŒCBOïŒã¯ãææ°ã®ããŒã¿ããŒã¹ç®¡çã·ã¹ãã ïŒDBMSïŒã®åºç€ãšããŠæ©èœããç¹å®ã®ã¯ãšãªã«å¯ŸããŠæãå¹ççãªå®è¡æŠç¥ãã€ã³ããªãžã§ã³ãã«éžæã§ããããã«ããŸãã
ã¯ãšãªæé©åãšã¯ïŒ
ã¯ãšãªæé©åã¯ãSQLã¯ãšãªã«å¯ŸããŠæãå¹ççãªå®è¡èšç»ãéžæããããã»ã¹ã§ããåäžã®ã¯ãšãªã¯ãå€ãã®å ŽåãããŸããŸãªæ¹æ³ã§å®è¡ã§ããããã©ãŒãã³ã¹ç¹æ§ã倧ããç°ãªããŸããã¯ãšãªãªããã£ãã€ã¶ã®ç®æšã¯ããããã®å¯èœæ§ãåæããCPUæéãI/Oæäœããããã¯ãŒã¯åž¯åå¹ ãªã©ã®ãªãœãŒã¹æ¶è²»ãæå°éã«æãããã©ã³ãéžæããããšã§ãã
ã¯ãšãªæé©åããªãå ŽåãåçŽãªã¯ãšãªã§ãã倧ããªããŒã¿ã»ããã§å®è¡ããã®ã«èš±å®¹ã§ããªãã»ã©é·ãæéããããå¯èœæ§ããããŸãããããã£ãŠã广çãªæé©åã¯ãããŒã¿ããŒã¹ã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãšã¹ã±ãŒã©ããªãã£ãç¶æããããã«äžå¯æ¬ ã§ãã
ã¯ãšãªãªããã£ãã€ã¶ã®åœ¹å²
ã¯ãšãªãªããã£ãã€ã¶ã¯ã宣èšåSQLã¯ãšãªãå®è¡å¯èœãªãã©ã³ã«å€æããDBMSã®ã³ã³ããŒãã³ãã§ããããã¯ã次ã®ãããªããã€ãã®ãã§ãŒãºã§åäœããŸãã
- è§£æãšæ€èšŒïŒSQLã¯ãšãªãè§£æãããããŒã¿ããŒã¹ã®æ§æãšã»ãã³ãã£ã¯ã¹ã«æºæ ããŠããããšã確èªãããŸããæ§æãšã©ãŒãããŒãã«ã®ååšãããã³åã®æå¹æ§ããã§ãã¯ãããŸãã
- ã¯ãšãªã®æžãæãïŒã¯ãšãªã¯åçã§ãããæœåšçã«ããå¹ççãªåœ¢åŒã«å€æãããŸããããã«ã¯ãåŒã®ç°¡ç¥åã代æ°å€æã®é©çšãåé·ãªæäœã®æé€ãå«ãŸããå ŽåããããŸããããšãã°ã`WHERE col1 = col2 AND col1 = col2`ã¯`WHERE col1 = col2`ã«ç°¡ç¥åã§ããŸãã
- ãã©ã³ã®çæïŒãªããã£ãã€ã¶ã¯ãå®è¡å¯èœãªãã©ã³ã®ã»ãããçæããŸããåãã©ã³ã¯ãããŒãã«çµåã®é åºãã€ã³ããã¯ã¹ã®äœ¿çšããœãŒãããã³éèšã®ã¢ã«ãŽãªãºã ã®éžæãªã©ãããŸããŸãªåŽé¢ã§ç°ãªãæ¹æ³ã§ã¯ãšãªãå®è¡ããæ¹æ³ã衚ããŸãã
- ã³ã¹ãã®èŠç©ããïŒãªããã£ãã€ã¶ã¯ãããŒã¿ã«é¢ããçµ±èšæ å ±ïŒããŒãã«ãµã€ãºãããŒã¿ååžãã€ã³ããã¯ã¹éžæçãªã©ïŒã«åºã¥ããŠãåãã©ã³ã®ã³ã¹ããèŠç©ãããŸãããã®ã³ã¹ãã¯éåžžãæšå®ãªãœãŒã¹äœ¿çšéïŒI/OãCPUãã¡ã¢ãªïŒã§è¡šãããŸãã
- ãã©ã³ã®éžæïŒãªããã£ãã€ã¶ã¯ãæšå®ã³ã¹ããæãäœããã©ã³ãéžæããŸãããã®ãã©ã³ã¯ãããŒã¿ããŒã¹ãšã³ãžã³ã«ãã£ãŠã³ã³ãã€ã«ããã³å®è¡ãããŸãã
ã³ã¹ãããŒã¹ã®æé©åãšã«ãŒã«ããŒã¹ã®æé©å
ã¯ãšãªæé©åã«ã¯ãã«ãŒã«ããŒã¹ã®æé©åïŒRBOïŒãšã³ã¹ãããŒã¹ã®æé©åïŒCBOïŒã®2ã€ã®äž»èŠãªã¢ãããŒãããããŸãã
- ã«ãŒã«ããŒã¹ã®æé©åïŒRBOïŒïŒRBOã¯ãã¯ãšãªã倿ããããã®äžé£ã®å®çŸ©æžã¿ã«ãŒã«ã«äŸåããŠããŸãããããã®ã«ãŒã«ã¯éåžžããã¥ãŒãªã¹ãã£ãã¯ãšããŒã¿ããŒã¹èšèšã®äžè¬çãªååã«åºã¥ããŠããŸããããšãã°ãäžè¬çãªã«ãŒã«ãšããŠãã¯ãšãªå®è¡ãã€ãã©ã€ã³ã®å¯èœãªéãæ©ãæ®µéã§éžæïŒWHEREå¥ïŒãå®è¡ããããšããããŸããRBOã¯éåžžãCBOãããå®è£ ãç°¡åã§ãããæé©ãªãã©ã³ãããŒã¿ã®ç¹æ§ã«å€§ããäŸåããè€éãªã·ããªãªã§ã¯ã广ãäœããªãå¯èœæ§ããããŸããRBOã¯é åºããŒã¹ã§ã - ã«ãŒã«ã¯å®çŸ©æžã¿ã®é åºã§é©çšãããŸãã
- ã³ã¹ãããŒã¹ã®æé©åïŒCBOïŒïŒCBOã¯ãããŒã¿ã«é¢ããçµ±èšæ å ±ã䜿çšããŠãããŸããŸãªå®è¡ãã©ã³ã®ã³ã¹ããèŠç©ãããŸããæ¬¡ã«ãæšå®ã³ã¹ããæãäœããã©ã³ãéžæããŸããCBOã¯RBOãããè€éã§ãããç¹ã«å€§ããªããŒãã«ãè€éãªçµåãããã³äžåäžãªããŒã¿ååžãå«ãã¯ãšãªã®å Žåãå€ãã®å Žåãå€§å¹ ã«åªããããã©ãŒãã³ã¹ãå®çŸã§ããŸããCBOã¯ããŒã¿é§ååã§ãã
ææ°ã®ããŒã¿ããŒã¹ã·ã¹ãã ã§ã¯ãäž»ã«CBOã䜿çšããŠãããç¹å®ã®ç¶æ³ããã©ãŒã«ããã¯ã¡ã«ããºã ãšããŠRBOã«ãŒã«ã§æ¡åŒµãããããšããããããŸãã
ã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ã®ä»çµã¿
CBOã®ã³ã¢ã¯ãããŸããŸãªå®è¡ãã©ã³ã®ã³ã¹ããæ£ç¢ºã«èŠç©ããããšã«ãããŸããããã«ã¯ãããã€ãã®éèŠãªæé ãå«ãŸããŸãã
1. åè£ã®å®è¡ãã©ã³ã®çæ
ã¯ãšãªãªããã£ãã€ã¶ã¯ãã¯ãšãªã«å¯ŸããŠå®è¡å¯èœãªãã©ã³ã®ã»ãããçæããŸãããã®ã»ããã¯ãç¹ã«è€æ°ã®ããŒãã«ãšçµåãå«ãè€éãªã¯ãšãªã®å Žåãéåžžã«å€§ãããªãå¯èœæ§ããããŸãããªããã£ãã€ã¶ã¯ãæ€çŽ¢ç©ºéãåæžããæããã«æé©ã§ã¯ãªããã©ã³ã®çæãåé¿ããããã«ãããŸããŸãªææ³ãæ¡çšããŠããŸããäžè¬çãªææ³ã¯æ¬¡ã®ãšããã§ãã
- ãã¥ãŒãªã¹ãã£ãã¯ïŒæ€çŽ¢ããã»ã¹ãã¬ã€ãããããã«çµéšåã䜿çšããŸããããšãã°ããªããã£ãã€ã¶ã¯ãé »ç¹ã«ã¢ã¯ã»ã¹ãããåã®ã€ã³ããã¯ã¹ã䜿çšãããã©ã³ãåªå ããå ŽåããããŸãã
- åæé宿³ïŒæ®ãã®ãã©ã³ã®ã³ã¹ãã®äžéãç¶æããªãããæ€çŽ¢ç©ºéãäœç³»çã«æ¢çŽ¢ããŸããäžéããããŸã§ã«æ€åºãããæé©ãªãã©ã³ã®ã³ã¹ããè¶ ããå Žåããªããã£ãã€ã¶ã¯æ€çŽ¢ããªãŒã®å¯Ÿå¿ãããã©ã³ããåæžã§ããŸãã
- åçèšç»æ³ïŒã¯ãšãªæé©åã®åé¡ãããå°ããªãµãåé¡ã«åå²ããååž°çã«è§£æ±ºããŸããããã¯ãè€æ°ã®çµåãå«ãã¯ãšãªã®æé©åã«å¹æçã§ãã
å®è¡ãã©ã³ã®è¡šçŸã¯ãããŒã¿ããŒã¹ã·ã¹ãã ã«ãã£ãŠç°ãªããŸããäžè¬çãªè¡šçŸã¯ããªãŒæ§é ã§ãåããŒãã¯æŒç®åïŒ`SELECT`ã`JOIN`ã`SORT`ãªã©ïŒã衚ãããšããžã¯æŒç®åéã®ããŒã¿ã®æµãã衚ããŸããããªãŒã®ãªãŒãããŒãã¯éåžžãã¯ãšãªã«é¢äžããããŒã¹ããŒãã«ã衚ããŸãã
äŸïŒ
SELECT * FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
WHERE c.Country = 'Germany';
å®è¡å¯èœãªå®è¡ãã©ã³ïŒç°¡ç¥åïŒïŒ
Join (Nested Loop Join)
/ \
Scan (Orders) Scan (Index Scan on Customers.Country)
2. ãã©ã³ã®ã³ã¹ãã®èŠç©ãã
ãªããã£ãã€ã¶ãåè£ãã©ã³ã®ã»ãããçæããããåãã©ã³ã®ã³ã¹ããèŠç©ããå¿ èŠããããŸãããã®ã³ã¹ãã¯éåžžãI/OæäœãCPUæéãã¡ã¢ãªæ¶è²»éãªã©ã®æšå®ãªãœãŒã¹äœ¿çšéã§è¡šãããŸãã
ã³ã¹ãã®èŠç©ããã¯ã次ã®ãããªããŒã¿ã«é¢ããçµ±èšæ å ±ã«å€§ããäŸåããŠããŸãã
- ããŒãã«çµ±èšïŒè¡æ°ãããŒãžæ°ãå¹³åè¡ãµã€ãºã
- åçµ±èšïŒåå¥ã®å€ã®æ°ãæå°å€ãšæå€§å€ããã¹ãã°ã©ã ã
- ã€ã³ããã¯ã¹çµ±èšïŒåå¥ã®ããŒã®æ°ãBããªãŒã®é«ããã¯ã©ã¹ã¿ãªã³ã°ãã¡ã¯ã¿ãŒã
ãããã®çµ±èšã¯éåžžãDBMSã«ãã£ãŠåéããã³ç¶æãããŸããã³ã¹ãã®èŠç©ãããæ£ç¢ºã«ä¿ã€ããã«ã¯ããããã®çµ±èšã宿çã«æŽæ°ããããšãéèŠã§ããå€ãçµ±èšã¯ããªããã£ãã€ã¶ãæé©ã§ãªããã©ã³ãéžæããåå ãšãªãå¯èœæ§ããããŸãã
ãªããã£ãã€ã¶ã¯ããããã®çµ±èšãã³ã¹ãã®èŠç©ããã«å€æããããã«ãã³ã¹ãã¢ãã«ã䜿çšããŸããã³ã¹ãã¢ãã«ã¯ãå ¥åããŒã¿ãšæŒç®åã®ç¹æ§ã«åºã¥ããŠãããŸããŸãªæŒç®åã®ãªãœãŒã¹æ¶è²»éãäºæž¬ããäžé£ã®æ°åŒã§ããããšãã°ãããŒãã«ã¹ãã£ã³ã®ã³ã¹ãã¯ããŒãã«å ã®ããŒãžæ°ã«åºã¥ããŠèŠç©ããããã€ã³ããã¯ã¹ã«ãã¯ã¢ããã®ã³ã¹ãã¯BããªãŒã®é«ããšã€ã³ããã¯ã¹ã®éžæçã«åºã¥ããŠèŠç©ããããå ŽåããããŸãã
ããŒã¿ããŒã¹ãã³ããŒã«ãã£ãŠç°ãªãã³ã¹ãã¢ãã«ã䜿çšãããå¯èœæ§ããããåäžã®ãã³ããŒå ã§ããæŒç®åãŸãã¯ããŒã¿æ§é ã®çš®é¡ã«ãã£ãŠç°ãªãã³ã¹ãã¢ãã«ãååšããå¯èœæ§ããããŸããã³ã¹ãã¢ãã«ã®ç²ŸåºŠã¯ãã¯ãšãªãªããã£ãã€ã¶ã®æå¹æ§ã«å€§ããªåœ±é¿ãäžããŸãã
äŸïŒ
ãã¹ããããã«ãŒãçµåã䜿çšããŠã2ã€ã®ããŒãã«`Orders`ãš`Customers`ãçµåããã³ã¹ããèŠç©ããããšãæ€èšããŠãã ããã
- `Orders`ã®è¡æ°ïŒ1,000,000
- `Customers`ã®è¡æ°ïŒ10,000
- `Orders`ããè¡ãèªã¿åãæšå®ã³ã¹ãïŒ0.01ã³ã¹ããŠããã
- `Customers`ããè¡ãèªã¿åãæšå®ã³ã¹ãïŒ0.02ã³ã¹ããŠããã
`Customers`ãã¢ãŠã¿ãŒããŒãã«ã®å Žåãæšå®ã³ã¹ãã¯æ¬¡ã®ããã«ãªããŸãã
(`Customers`ãããã¹ãŠã®è¡ãèªã¿åãã³ã¹ã) + (`Customers`ã®è¡æ° * `Orders`ããäžèŽããè¡ãèªã¿åãã³ã¹ã)
(10,000 * 0.02) + (10,000 * (äžèŽãèŠã€ããããã®ã³ã¹ã))
`Orders`ã®çµååã«é©åãªã€ã³ããã¯ã¹ãååšããå ŽåãäžèŽãèŠã€ããããã®ã³ã¹ãã¯äœããªããŸããããã§ãªãå Žåãã³ã¹ãã¯ã¯ããã«é«ããªããç°ãªãçµåã¢ã«ãŽãªãºã ã®æ¹ãå¹ççã«ãªããŸãã
3. æé©ãªãã©ã³ã®éžæ
ååè£ãã©ã³ã®ã³ã¹ããèŠç©ãã£ãåŸããªããã£ãã€ã¶ã¯æšå®ã³ã¹ããæãäœããã©ã³ãéžæããŸãããã®ãã©ã³ã¯ãå®è¡å¯èœãªã³ãŒãã«ã³ã³ãã€ã«ãããããŒã¿ããŒã¹ãšã³ãžã³ã«ãã£ãŠå®è¡ãããŸãã
ãã©ã³ã®éžæããã»ã¹ã¯ãç¹ã«å€æ°ã®å®è¡å¯èœãªãã©ã³ãããè€éãªã¯ãšãªã®å Žåãèšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸãããªããã£ãã€ã¶ã¯ãæ€çŽ¢ç©ºéãåæžãã劥åœãªæéå ã«é©åãªãã©ã³ãèŠã€ããããã«ããã¥ãŒãªã¹ãã£ãã¯ãåæé宿³ãªã©ã®ææ³ãæ¡çšããããšããããããŸãã
éžæããããã©ã³ã¯éåžžãåŸã§äœ¿çšããããã«ãã£ãã·ã¥ãããŸããåãã¯ãšãªãå床å®è¡ãããå Žåããªããã£ãã€ã¶ã¯ãã£ãã·ã¥ããããã©ã³ãååŸããã¯ãšãªã®åæé©åã®ãªãŒããŒããããåé¿ã§ããŸãããã ããåºç€ãšãªãããŒã¿ãå€§å¹ ã«å€æŽãããå ŽåïŒå€§èŠæš¡ãªæŽæ°ãæ¿å ¥ãªã©ïŒããã£ãã·ã¥ããããã©ã³ã¯æé©ã§ãªããªãå¯èœæ§ããããŸãããã®å Žåããªããã£ãã€ã¶ã¯ã¯ãšãªãåæé©åããŠæ°ãããã©ã³ãçæããå¿ èŠãããå ŽåããããŸãã
ã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ã«åœ±é¿ãäžããèŠå
CBOã®æå¹æ§ã¯ãããã€ãã®èŠå ã«äŸåããŠããŸãã
- çµ±èšã®ç²ŸåºŠïŒãªããã£ãã€ã¶ã¯ãããŸããŸãªå®è¡ãã©ã³ã®ã³ã¹ããèŠç©ããããã«ãæ£ç¢ºãªçµ±èšã«äŸåããŠããŸããå€ããŸãã¯äžæ£ç¢ºãªçµ±èšã¯ããªããã£ãã€ã¶ãæé©ã§ãªããã©ã³ãéžæããåå ãšãªãå¯èœæ§ããããŸãã
- ã³ã¹ãã¢ãã«ã®å質ïŒãªããã£ãã€ã¶ã䜿çšããã³ã¹ãã¢ãã«ã¯ãããŸããŸãªæŒç®åã®ãªãœãŒã¹æ¶è²»éãæ£ç¢ºã«åæ ããå¿ èŠããããŸããäžæ£ç¢ºãªã³ã¹ãã¢ãã«ã¯ãäžé©åãªãã©ã³ã®éžæã«ã€ãªããå¯èœæ§ããããŸãã
- æ€çŽ¢ç©ºéã®å®å šæ§ïŒãªããã£ãã€ã¶ã¯ãé©åãªãã©ã³ãèŠã€ããããã«ãæ€çŽ¢ç©ºéã®ååã«å€§ããªéšåãæ¢çŽ¢ã§ããå¿ èŠããããŸããæ€çŽ¢ç©ºéãå¶éãããããŠããå Žåããªããã£ãã€ã¶ã¯æœåšçã«ããè¯ããã©ã³ãèŠéãå¯èœæ§ããããŸãã
- ã¯ãšãªã®è€éãïŒã¯ãšãªãè€éã«ãªãã»ã©ïŒçµåããµãã¯ãšãªãéèšãå¢ããã»ã©ïŒãå®è¡å¯èœãªãã©ã³ã®æ°ãææ°é¢æ°çã«å¢å ããŸããããã«ãããæé©ãªãã©ã³ãèŠã€ããã®ãé£ãããªããã¯ãšãªã®æé©åã«å¿ èŠãªæéãå¢å ããŸãã
- ããŒããŠã§ã¢ãšã·ã¹ãã æ§æïŒCPUé床ãã¡ã¢ãªãµã€ãºããã£ã¹ã¯I/O垯åå¹ ããããã¯ãŒã¯é å»¶ãªã©ã®èŠçŽ ã¯ãããŸããŸãªå®è¡ãã©ã³ã®ã³ã¹ãã«åœ±é¿ãäžããå¯èœæ§ããããŸãããªããã£ãã€ã¶ã¯ãã³ã¹ããèŠç©ãããšãã«ãããã®èŠçŽ ãèæ ®ããå¿ èŠããããŸãã
ã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ã®èª²é¡ãšå¶éäºé
CBOã«ã¯å©ç¹ãããã«ãããããããããã€ãã®èª²é¡ãšå¶éäºé ããããŸãã
- è€éãïŒCBOã®å®è£ ãšä¿å®ã¯è€éãªäœæ¥ã§ããããŒã¿ããŒã¹ã®å éšæ§é ãã¯ãšãªåŠçã¢ã«ãŽãªãºã ãããã³çµ±èšã¢ããªã³ã°ã«é¢ããæ·±ãçè§£ãå¿ èŠã§ãã
- æšå®ãšã©ãŒïŒã³ã¹ãã®èŠç©ããã¯æ¬è³ªçã«äžå®å šã§ãããªããã£ãã€ã¶ã¯ãå©çšå¯èœãªçµ±èšã«åºã¥ããŠã®ã¿èŠç©ãããè¡ãããšãã§ãããããã®èŠç©ããã¯ãç¹ã«è€éãªã¯ãšãªãåã£ãããŒã¿ååžã®å Žåãåžžã«æ£ç¢ºã§ãããšã¯éããŸããã
- æé©åã®ãªãŒããŒãããïŒã¯ãšãªæé©åããã»ã¹èªäœããªãœãŒã¹ãæ¶è²»ããŸããéåžžã«åçŽãªã¯ãšãªã®å Žåãæé©åã®ãªãŒããŒããããããè¯ããã©ã³ãéžæããå©ç¹ãäžåãå¯èœæ§ããããŸãã
- ãã©ã³ã®å®å®æ§ïŒã¯ãšãªãããŒã¿ããŸãã¯ã·ã¹ãã æ§æã®å°ããªå€æŽã«ããããªããã£ãã€ã¶ãç°ãªãå®è¡ãã©ã³ãéžæããå ŽåããããŸããæ°ãããã©ã³ã®ããã©ãŒãã³ã¹ãäœãå ŽåããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«ãã£ãŠäœæãããä»®å®ãç¡å¹ã«ãªãå Žåãããã¯åé¡ã«ãªãå¯èœæ§ããããŸãã
- å®äžçã®ç¥èã®æ¬ åŠïŒCBOã¯çµ±èšã¢ããªã³ã°ã«åºã¥ããŠããŸããå®äžçã®ã¯ãŒã¯ããŒããŸãã¯ããŒã¿ç¹æ§ã®ãã¹ãŠã®åŽé¢ããã£ããã£ã§ããªãå ŽåããããŸããããšãã°ããªããã£ãã€ã¶ã¯ãæé©ãªå®è¡ãã©ã³ã«åœ±é¿ãäžããå¯èœæ§ã®ããç¹å®ã®ããŒã¿äŸåé¢ä¿ãããžãã¹ã«ãŒã«ãèªèããŠããªãå¯èœæ§ããããŸãã
ã¯ãšãªæé©åã®ãã¹ããã©ã¯ãã£ã¹
æé©ãªã¯ãšãªããã©ãŒãã³ã¹ã確ä¿ããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- çµ±èšãææ°ã®ç¶æ ã«ä¿ã€ïŒããŒã¿ããŒã¹çµ±èšã宿çã«æŽæ°ããŠããªããã£ãã€ã¶ãããŒã¿ã«é¢ããæ£ç¢ºãªæ å ±ãæã£ãŠããããšã確èªããŸããã»ãšãã©ã®DBMSã«ã¯ãçµ±èšãèªåçã«æŽæ°ããããã®ããŒã«ãçšæãããŠããŸãã
- ã€ã³ããã¯ã¹ãè³¢ã䜿çšããïŒé »ç¹ã«ã¯ãšãªãããåã«ã€ã³ããã¯ã¹ãäœæããŸãããã ããæžãèŸŒã¿æäœã®ãªãŒããŒããããå¢å ããå¯èœæ§ããããããã€ã³ããã¯ã¹ãéå°ã«äœæããããšã¯é¿ããŠãã ããã
- å¹ççãªã¯ãšãªãäœæããïŒçžé¢ãµãã¯ãšãªã`SELECT *`ãªã©ãã¯ãšãªã®æé©åã劚ããå¯èœæ§ã®ããæ§é ã®äœ¿çšã¯é¿ããŠãã ãããæç€ºçãªåãªã¹ãã䜿çšãããªããã£ãã€ã¶ãçè§£ããããã¯ãšãªãäœæããŸãã
- å®è¡ãã©ã³ãçè§£ããïŒã¯ãšãªå®è¡ãã©ã³ã調ã¹ãŠãæœåšçãªããã«ããã¯ãç¹å®ããæ¹æ³ãåŠã³ãŸããã»ãšãã©ã®DBMSã«ã¯ãå®è¡ãã©ã³ãèŠèŠåããã³åæããããã®ããŒã«ãçšæãããŠããŸãã
- ã¯ãšãªãã©ã¡ãŒã¿ã調æŽããïŒããŸããŸãªã¯ãšãªãã©ã¡ãŒã¿ãšããŒã¿ããŒã¹æ§æèšå®ã詊ããŠãããã©ãŒãã³ã¹ãæé©åããŸãããã©ã¡ãŒã¿ã®èª¿æŽã«é¢ããã¬ã€ãã³ã¹ã«ã€ããŠã¯ãDBMSã®ããã¥ã¡ã³ããåç §ããŠãã ããã
- ã¯ãšãªãã³ããæ€èšããïŒå Žåã«ãã£ãŠã¯ããªããã£ãã€ã¶ãããè¯ããã©ã³ã«å°ãããã«ããªããã£ãã€ã¶ã«ãã³ããæäŸããå¿ èŠããããããããŸããããã ãããã³ãã䜿çšãããšã¯ãšãªã®ç§»æ€æ§ãäœäžããä¿å®ãé£ãããªãå¯èœæ§ãããããããã³ãã¯æ§ããã«äœ¿çšããŠãã ããã
- 宿çãªããã©ãŒãã³ã¹ç£èŠïŒã¯ãšãªã®ããã©ãŒãã³ã¹ã宿çã«ç£èŠããŠãããã©ãŒãã³ã¹ã®åé¡ãããã¢ã¯ãã£ãã«æ€åºããŠå¯ŸåŠããŸããããã©ãŒãã³ã¹ç£èŠããŒã«ã䜿çšããŠãäœéãªã¯ãšãªãç¹å®ãããªãœãŒã¹ã®äœ¿çšç¶æ³ã远跡ããŸãã
- é©åãªããŒã¿ã¢ããªã³ã°ïŒå¹ççãªããŒã¿ã¢ãã«ã¯ãåªããã¯ãšãªããã©ãŒãã³ã¹ã«ãšã£ãŠäžå¯æ¬ ã§ããããŒã¿ãæ£èŠåããŠãåé·æ§ãæžãããããŒã¿æŽåæ§ãåäžãããŸããããã©ãŒãã³ã¹äžã®çç±ãããå¿ èŠã«å¿ããŠéæ£èŠåãæ€èšããŠãã ããããã ãããã¬ãŒããªãã«æ³šæããŠãã ããã
ã³ã¹ãããŒã¹ã®æé©åã®å®éã®äŸ
CBOãã¯ãšãªããã©ãŒãã³ã¹ãã©ã®ããã«åäžããããã«ã€ããŠãããã€ãã®å ·äœçãªäŸãèããŠã¿ãŸãããã
äŸ1ïŒé©åãªçµåé åºã®éžæ
次ã®ã¯ãšãªãæ€èšããŠãã ããã
SELECT * FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
JOIN Products p ON o.ProductID = p.ProductID
WHERE c.Country = 'Germany';
ãªããã£ãã€ã¶ã¯ãç°ãªãçµåé åºãéžæã§ããŸããããšãã°ãæåã«`Orders`ãš`Customers`ãçµåããŠããããã®çµæã`Products`ãšçµåããããšãã§ããŸãããŸãã¯ãæåã«`Customers`ãš`Products`ãçµåããŠããããã®çµæã`Orders`ãšçµåããããšãã§ããŸãã
æé©ãªçµåé åºã¯ãããŒãã«ã®ãµã€ãºãš`WHERE`å¥ã®éžæçã«ãã£ãŠç°ãªããŸãã`Customers`ãå°ããªããŒãã«ã§ããã`WHERE`å¥ãè¡æ°ãå€§å¹ ã«æžããå Žåãæåã«`Customers`ãš`Products`ãçµåããŠããããã®çµæã`Orders`ãšçµåããæ¹ãå¹ççãªå ŽåããããŸããCBOã¯ãåå¯èœãªçµåé åºã®äžéçµæã»ããã®ãµã€ãºãèŠç©ãããæãå¹ççãªãªãã·ã§ã³ãéžæããŸãã
äŸ2ïŒã€ã³ããã¯ã¹ã®éžæ
次ã®ã¯ãšãªãæ€èšããŠãã ããã
SELECT * FROM Employees
WHERE Department = 'Sales' AND Salary > 50000;
ãªããã£ãã€ã¶ã¯ã`Department`åã®ã€ã³ããã¯ã¹ã`Salary`åã®ã€ã³ããã¯ã¹ããŸãã¯äž¡æ¹ã®åã®è€åã€ã³ããã¯ã¹ã䜿çšãããã©ãããéžæã§ããŸããéžæã¯ã`WHERE`å¥ã®éžæçãšã€ã³ããã¯ã¹ã®ç¹æ§ã«ãã£ãŠç°ãªããŸãã
`Department`åã®éžæçãé«ãå ŽåïŒã€ãŸããå°æ°ã®åŸæ¥å¡ã®ã¿ããSalesãéšéã«å±ããŠããå ŽåïŒã`Department`åã«ã€ã³ããã¯ã¹ãããããªããã£ãã€ã¶ã¯ãã®ã€ã³ããã¯ã¹ã䜿çšããŠãSalesãéšéã®åŸæ¥å¡ããã°ããååŸãã`Salary`åã«åºã¥ããŠçµæããã£ã«ã¿ãªã³ã°ããããšãéžæããå ŽåããããŸãã
CBOã¯ãåã®ã«ãŒãã£ããªãã£ãã€ã³ããã¯ã¹çµ±èšïŒã¯ã©ã¹ã¿ãªã³ã°ãã¡ã¯ã¿ãŒãåå¥ã®ããŒã®æ°ïŒãããã³ç°ãªãã€ã³ããã¯ã¹ã«ãã£ãŠè¿ãããæšå®è¡æ°ãèæ ®ããŠãæé©ãªéžæãè¡ããŸãã
äŸ3ïŒé©åãªçµåã¢ã«ãŽãªãºã ã®éžæ
ãªããã£ãã€ã¶ã¯ããã¹ããããã«ãŒãçµåãããã·ã¥çµåãããŒãžçµåãªã©ãç°ãªãçµåã¢ã«ãŽãªãºã ãéžæã§ããŸããåã¢ã«ãŽãªãºã ã«ã¯ç°ãªãããã©ãŒãã³ã¹ç¹æ§ããããç°ãªãã·ããªãªã«æé©ã§ãã
- ãã¹ããããã«ãŒãçµåïŒå°ããªããŒãã«ããŸãã¯ããããã®ããŒãã«ã®çµååã§ã€ã³ããã¯ã¹ã䜿çšã§ããå Žåã«é©ããŠããŸãã
- ããã·ã¥çµåïŒååãªã¡ã¢ãªã䜿çšã§ããå Žåã倧ããªããŒãã«ã«é©ããŠããŸãã
- ããŒãžçµåïŒå ¥åããŒãã«ãçµååã§ãœãŒãããå¿ èŠããããŸããããŒãã«ããã§ã«ãœãŒããããŠããå ŽåããŸãã¯ãœãŒããæ¯èŒçå®äŸ¡ãªå Žåã«å¹ççã§ãã
CBOã¯ãããŒãã«ã®ãµã€ãºãã€ã³ããã¯ã¹ã®å¯çšæ§ãããã³å©çšå¯èœãªã¡ã¢ãªã®éãèæ ®ããŠãæãå¹ççãªçµåã¢ã«ãŽãªãºã ãéžæããŸãã
ã¯ãšãªæé©åã®å°æ¥
ã¯ãšãªæé©åã¯é²åããåéã§ããããŒã¿ããŒã¹ã®ãµã€ãºãšè€éããå¢ããæ°ããããŒããŠã§ã¢ããã³ãœãããŠã§ã¢ãã¯ãããžãŒãåºçŸããã«ã€ããŠãã¯ãšãªãªããã£ãã€ã¶ã¯æ°ãã課é¡ã«å¯Ÿå¿ããããã«é©å¿ããå¿ èŠããããŸãã
ã¯ãšãªæé©åã®æ°ããªãã¬ã³ãã«ã¯ã次ã®ãããªãã®ããããŸãã
- ã³ã¹ãã®èŠç©ããã®ããã®æ©æ¢°åŠç¿ïŒæ©æ¢°åŠç¿æè¡ã䜿çšããŠãã³ã¹ãã®èŠç©ããã®ç²ŸåºŠãåäžãããŸããæ©æ¢°åŠç¿ã¢ãã«ã¯ãéå»ã®ã¯ãšãªå®è¡ããŒã¿ããåŠç¿ããŠãæ°ããã¯ãšãªã®ã³ã¹ããããæ£ç¢ºã«äºæž¬ã§ããŸãã
- é©å¿ã¯ãšãªæé©åïŒã¯ãšãªã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠãã芳å¯ãããåäœã«åºã¥ããŠå®è¡ãã©ã³ãåçã«èª¿æŽããŸããããã¯ãäºæž¬äžå¯èœãªã¯ãŒã¯ããŒããŸãã¯å€åããããŒã¿ç¹æ§ãåŠçããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
- ã¯ã©ãŠããã€ãã£ãã¯ãšãªæé©åïŒåæ£ã¹ãã¬ãŒãžããšã©ã¹ãã£ãã¯ã¹ã±ãŒãªã³ã°ãªã©ãã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç¹å®ã®ç¹æ§ãèæ ®ããŠãã¯ã©ãŠãããŒã¹ã®ããŒã¿ããŒã¹ã·ã¹ãã ã®ã¯ãšãªãæé©åããŸãã
- æ°ããããŒã¿åã®ã¯ãšãªæé©åïŒã¯ãšãªãªããã£ãã€ã¶ãæ¡åŒµããŠãJSONãXMLã空éããŒã¿ãªã©ã®æ°ããããŒã¿åãåŠçããŸãã
- èªå·±èª¿æŽããŒã¿ããŒã¹ïŒã¯ãŒã¯ããŒããã¿ãŒã³ãšã·ã¹ãã ç¹æ§ã«åºã¥ããŠèªåçã«èªèº«ã調æŽã§ããããŒã¿ããŒã¹ã·ã¹ãã ãéçºããæåä»å ¥ã®å¿ èŠæ§ãæå°éã«æããŸãã
çµè«
ã³ã¹ãããŒã¹ã®ã¯ãšãªãã©ã³ãã³ã°ã¯ãããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ãæé©åããããã®éèŠãªæè¡ã§ããããŸããŸãªå®è¡ãã©ã³ã®ã³ã¹ããæ éã«èŠç©ãããæãå¹ççãªãªãã·ã§ã³ãéžæããããšã«ãããCBOã¯ã¯ãšãªã®å®è¡æéãå€§å¹ ã«ççž®ããã·ã¹ãã å šäœã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããCBOã«ã¯èª²é¡ãšå¶éäºé ããããŸãããææ°ã®ããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã®åºç€ãšããŠæ©èœãç¶ããç¶ç¶çãªç ç©¶éçºã«ãããã®æå¹æ§ãåžžã«åäžããŠããŸãã
CBOã®ååãçè§£ããã¯ãšãªæé©åã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãæãèŠæ±ã®å³ããã¯ãŒã¯ããŒãã«ã察å¿ã§ãã髿§èœããŒã¿ããŒã¹ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããã¯ãšãªæé©åã®ææ°ãã¬ã³ãã«ã€ããŠåžžã«æ å ±ãææ¡ããããšã§ãæ°ãããã¯ãããžãŒãšãã¯ããã¯ã掻çšããŠãããŒã¿ããŒã¹ã·ã¹ãã ã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãããã«åäžãããããšãã§ããŸãã