ç§ãã¡ãããç¥ã£ãŠãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«ãããå žåçãªã·ããªãªã® XNUMX ã€ã¯ãç¹å®ã®åºæºã«åŸã£ãŠããŒã¿ãæ€çŽ¢ãããããèªã¿ããã圢åŒã§è¡šç€ºããããšã§ãã 䞊ã¹æ¿ããã°ã«ãŒãåãããŒãžã³ã°ã®ããã®è¿œå ãªãã·ã§ã³ãããå ŽåããããŸãã ãã®ã¿ã¹ã¯ã¯çè«çã«ã¯ç°¡åã§ãããããã解決ãããšãã«å€ãã®éçºè ãå€ãã®ééããç¯ãããããåŸã«çç£æ§ã®äœäžãåŒãèµ·ãããŸãã ãã®åé¡ã解決ããããã®ããŸããŸãªãªãã·ã§ã³ãæ€èšããæãå¹æçãªå®è£ ãéžæããããã®æšå¥šäºé ãäœæããŠã¿ãŸãããã
ããŒãžã³ã° ãªãã·ã§ã³ #1
æãæµ®ãã¶æãåçŽãªãªãã·ã§ã³ã¯ãæãå€å žçãªåœ¢åŒã§æ€çŽ¢çµæãããŒãžããšã«è¡šç€ºããããšã§ãã
ã¢ããªã±ãŒã·ã§ã³ã§ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã䜿çšããŠãããšããŸãã ãã®å Žåããã®ãã©ãŒã ã§æ
å ±ã衚瀺ããã«ã¯ãXNUMX ã€ã® SQL ã¯ãšãªãå®è¡ããå¿
èŠããããŸãã
- çŸåšã®ããŒãžã®è¡ãååŸããŸãã
- æ€çŽ¢æ¡ä»¶ã«å¯Ÿå¿ããç·è¡æ°ãèšç®ããŸããããã¯ããŒãžã衚瀺ããããã«å¿ èŠã§ãã
äŸãšããŠãã¹ã MS SQL ããŒã¿ããŒã¹ã䜿çšããŠæåã®ã¯ãšãªãèŠãŠã¿ãŸããã
SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
äžèšã®ã¯ãšãªã¯ãè¿œå æ¥ã®éé ã§äžŠã¹æ¿ãããããªã¹ãã®æåã® 50 件ã®æ³šæãã€ãŸãææ°ã® 50 件ã®æ³šæãè¿ããŸãã
ãã¹ãããŒã¹ã§ã¯é«éã«å®è¡ãããŸãããå®è¡èšç»ãš I/O çµ±èšãèŠãŠã¿ãŸãããã
Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
ã¯ãšãª ã©ã³ã¿ã€ã 㧠SET STATISTICS IO ON ã³ãã³ããå®è¡ãããšãåã¯ãšãªã® I/O çµ±èšãååŸã§ããŸãã
å®è¡èšç»ãããããããã«ãæããªãœãŒã¹ãæ¶è²»ãããªãã·ã§ã³ã¯ããœãŒã¹ ããŒãã«ã®ãã¹ãŠã®è¡ãè¿œå æ¥ã§äžŠã¹æ¿ããããšã§ãã ãããŠåé¡ã¯ãããŒãã«ã«è¡šç€ºãããè¡ãå¢ããã»ã©ã䞊ã¹æ¿ãããé£ããããªããšããããšã§ãã å®éã«ã¯ããã®ãããªç¶æ³ã¯é¿ããã¹ãã§ãããããè¿œå æ¥ã«ã€ã³ããã¯ã¹ãè¿œå ããŠããªãœãŒã¹æ¶è²»ãå€åãããã©ããã確èªããŠã¿ãŸãããã
Table 'SalesOrderHeader'. Scan count 1, logical reads 165, physical reads 0, read-ahead reads 5, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
æããã«ãããªãè¯ããªããŸããã ãããããã¹ãŠã®åé¡ã¯è§£æ±ºãããã®ã§ããããïŒ ååã®ç·å䟡ã 100 ãã«ãè¶ ãã泚æãæ€çŽ¢ããããã«ã¯ãšãªãå€æŽããŠã¿ãŸãããã
SELECT * FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
Table 'SalesOrderHeader'. Scan count 1, logical reads 1081, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
é¢çœãç¶æ³ãçºçããŸãããã¯ãšãª ãã©ã³ã¯åã®ãã©ã³ãããããã»ã©æªããããŸããããå®éã®è«çèªã¿åãæ°ã¯ãã« ããŒãã« ã¹ãã£ã³ã®ã»ãŒ 165 åã«ãªããŸãã 解決çã¯ãããŸããæ¢åã®ã€ã³ããã¯ã¹ããè€åã€ã³ããã¯ã¹ãäœæããååã®åèšäŸ¡æ Œã XNUMX çªç®ã®ãã£ãŒã«ããšããŠè¿œå ãããšãåã³ XNUMX åã®è«çèªã¿åããåŸãããŸãã
CREATE INDEX IX_SalesOrderHeader_OrderDate_SubTotal on Sales.SalesOrderHeader(OrderDate, SubTotal);
ãã®äžé£ã®äŸã¯é·ãç¶ããããšãã§ããŸãããããã§è¡šæãããäž»ãªèãã¯æ¬¡ã® XNUMX ã€ã§ãã
- æ€çŽ¢ã¯ãšãªã«æ°ããæ¡ä»¶ã䞊ã¹æ¿ãé åºãè¿œå ãããšãæ€çŽ¢ã¯ãšãªã®é床ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãã ããæ€çŽ¢èªã«äžèŽãããã¹ãŠã®çµæã§ã¯ãªããããŒã¿ã®äžéšã®ã¿ãå·®ãåŒãå¿ èŠãããå Žåããã®ãããªã¯ãšãªãæé©åããæ¹æ³ã¯ãããããããŸãã
次ã«ãæåã«èª¬æãã 100 çªç®ã®ã¯ãšãªãã€ãŸãæ€çŽ¢æ¡ä»¶ãæºããã¬ã³ãŒãã®æ°ãã«ãŠã³ãããã¯ãšãªã«ç§»ããŸãããã åãäŸãèããŠã¿ãŸããã - XNUMX ãã«ãè¶ ãã泚æãæ€çŽ¢ããŸãã
SELECT COUNT(1) FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
äžèšã®è€åã€ã³ããã¯ã¹ãèæ ®ãããšã次ãåŸãããŸãã
Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SubTotal ãã£ãŒã«ãã¯æåã®äœçœ®ã«ãªããããã¯ãšãªã§ã¯ããã䜿çšã§ããªããããã¯ãšãªãã€ã³ããã¯ã¹å šäœãééãããšããäºå®ã¯é©ãã¹ãããšã§ã¯ãããŸããã ãã®åé¡ã¯ãSubTotal ãã£ãŒã«ãã«å¥ã®ã€ã³ããã¯ã¹ãè¿œå ããããšã§è§£æ±ºããããã®çµæãè«çèªã¿åã㯠48 åã®ã¿ã«ãªããŸãã
æ°éãæ°ãããªã¯ãšã¹ãã®äŸãããã«ããã€ãæããããšãã§ããŸãããæ¬è³ªã¯åãã§ãã ããŒã¿ã®åä¿¡ãšåèšéã®ã«ãŠã³ãã¯ãæ ¹æ¬çã«ç°ãªã XNUMX ã€ã®ãªã¯ãšã¹ãã§ããããããã«æé©åã®ããã®ç¬èªã®å¯Ÿçãå¿ èŠã§ãã äžè¬ã«ãäž¡æ¹ã®ã¯ãšãªã«å¯ŸããŠåçã«æ©èœããã€ã³ããã¯ã¹ã®çµã¿åãããèŠã€ããããšã¯ã§ããŸããã
ãããã£ãŠããã®ãããªæ€çŽ¢ãœãªã¥ãŒã·ã§ã³ãéçºãããšãã«æ確ã«ããå¿ èŠãããéèŠãªèŠä»¶ã® XNUMX ã€ã¯ãèŠã€ãã£ããªããžã§ã¯ãã®ç·æ°ã確èªããããšãäŒæ¥ã«ãšã£ãŠæ¬åœã«éèŠãã©ããã§ãã ããããšããããšããããããŸãã ãŸããç¹å®ã®ããŒãžçªå·ã«ããããã²ãŒã·ã§ã³ã¯ãã»ãšãã©ã®ããŒãžã³ã° ã·ããªãªãã次ã®ããŒãžã«é²ããããã«èŠãããããç§ã®æèŠã§ã¯éåžžã«ç¯å²ãçããœãªã¥ãŒã·ã§ã³ã§ãã
ããŒãžã³ã° ãªãã·ã§ã³ #2
ãŠãŒã¶ãŒã¯ãèŠã€ãã£ããªããžã§ã¯ãã®ç·æ°ãç¥ãããšã«é¢å¿ããªããšä»®å®ããŸãããã æ€çŽ¢ããŒãžãç°¡çŽ åããŠã¿ãŸãããã
å®éãå¯äžå€æŽãããã®ã¯ãç¹å®ã®ããŒãžçªå·ã«ç§»åããæ¹æ³ããªãããšã§ããçŸåšããã®ããŒãã«ã¯è¡šç€ºããããã«ããŒãžæ°ãç¥ãå¿
èŠããããŸããã ããããçåãçããŸãã(ã次ãžããªã³ã¯ãæ£ãã衚瀺ããããã«)ãããŒãã«ã¯æ¬¡ã®ããŒãžã®ããŒã¿ããããã©ãããã©ã®ããã«ããŠç¥ãã®ã§ãããã?
çãã¯éåžžã«ç°¡åã§ãã衚瀺ã«å¿ èŠãªã¬ã³ãŒãããã 4 ã€å€ãã®ã¬ã³ãŒããããŒã¿ããŒã¹ããèªã¿åãããšãã§ãããã®ãè¿œå ã®ãã¬ã³ãŒãã®ååšã«ãã£ãŠã次ã®éšåããããã©ãããããããŸãã ãã®æ¹æ³ã§ã¯ã5 ããŒãžã®ããŒã¿ãååŸããããã« XNUMX ã€ã®ãªã¯ãšã¹ããå®è¡ããã ãã§æžã¿ãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããã®ãããªæ©èœã®ãµããŒãã容æã«ãªããŸãã ç§ã®å®è·µã§ã¯ãã¬ã³ãŒãã®ç·æ°ã®ã«ãŠã³ããæåŠãããšãçµæã®æäŸã XNUMX ïœ XNUMX åéããªãã±ãŒã¹ããããŸããã
ãã®ã¢ãããŒãã«ã¯ãããã€ãã®ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ ãªãã·ã§ã³ããããŸããäžèšã®äŸã®ãããªãæ»ããã³ãã³ããšãé²ããã³ãã³ãã衚瀺ãããçµæã«æ°ããéšåãè¿œå ããã ãã®ããã£ãšèªã¿èŸŒãããã¿ã³ãæ©èœãããç¡éã¹ã¯ããŒã«ã ããã£ãšèªã¿èŸŒããã®ååã«åºã¥ããŠããŸããã次ã®éšåãååŸããåå³ã¯ããŠãŒã¶ãŒã衚瀺ããããã¹ãŠã®çµæãæåŸãŸã§ã¹ã¯ããŒã«ããããšã§ãã ã©ã®ãããªèŠèŠçãªãœãªã¥ãŒã·ã§ã³ã§ãã£ãŠããããŒã¿ ãµã³ããªã³ã°ã®ååã¯å€ãããŸããã
ããŒãžã³ã°å®è£ ã®åŸ®åŠãªéã
äžèšã®ãã¹ãŠã®ã¯ãšãªäŸã§ã¯ãã¯ãšãªèªäœãçµæè¡ã®é åºãšè¿ãå¿ èŠãããè¡æ°ãæå®ããå Žåãããªãã»ãã + ã«ãŠã³ããã¢ãããŒãã䜿çšããŠããŸãã ãŸãããã®å Žåã«ãã©ã¡ãŒã¿ã®åãæž¡ããæŽçããæé©ãªæ¹æ³ãèŠãŠã¿ãŸãããã å®éã«ãç§ã¯ããã€ãã®æ¹æ³ãèŠã€ããŸããã
- èŠæ±ãããããŒãžã®ã·ãªã¢ã«çªå· (pageIndex)ãããŒãž ãµã€ãº (pageSize)ã
- è¿ãããæåã®ã¬ã³ãŒãã®ã·ãªã¢ã«çªå· (startIndex)ãçµæå ã®ã¬ã³ãŒãã®æå€§æ° (count)ã
- è¿ãããæåã®ã¬ã³ãŒãã®ã·ãŒã±ã³ã¹çªå· (startIndex)ãè¿ãããæåŸã®ã¬ã³ãŒãã®ã·ãŒã±ã³ã¹çªå· (endIndex)ã
äžèŠãããšãããã¯éåžžã«åæ©çã§éãããªãããã«æãããããããŸããã ããããããã¯ããã§ã¯ãããŸãããæã䟿å©ã§æ®éçãªãªãã·ã§ã³ã¯ XNUMX çªç® (startIndexãcount) ã§ãã ããã«ã¯ããã€ãã®çç±ããããŸãã
- äžèšã® +1 ãšã³ããªæ ¡æ£ã¢ãããŒãã®å ŽåãpageIndex ãš pageSize ã䜿çšããæåã®ãªãã·ã§ã³ã¯éåžžã«äžäŸ¿ã§ãã ããšãã°ã50 ããŒãžããã 1 件ã®æçš¿ã衚瀺ããããšããŸãã äžèšã®ã¢ã«ãŽãªãºã ã«ããã°ãå¿ èŠä»¥äžã« 1 ã¬ã³ãŒãå€ãèªã¿åãå¿ èŠããããŸãã ãã®ã+51ãããµãŒããŒã«å®è£ ãããŠããªãå Žåãæåã®ããŒãžã§ã¯ 51 ãã 101 ãŸã§ã®ã¬ã³ãŒããèŠæ±ãã51 çªç®ã®ããŒãžã§ã¯ 52 ãã 102 ãŸã§ã®ã¬ã³ãŒããèŠæ±ããå¿ èŠãããããšãããããŸãã ããŒãž ãµã€ãºã XNUMX ã«æå®ããpageIndex ãå¢ãããšãXNUMX çªç®ã®ããŒãžã¯ XNUMX ãã XNUMX ãªã©ã«æ»ããŸãã ãããã£ãŠãæåã®ãªãã·ã§ã³ã§ã¯ã次ã®ããŒãžã«ç§»åãããã¿ã³ãé©åã«å®è£ ããå¯äžã®æ¹æ³ã¯ããµãŒããŒã«ãäœåãªãè¡ãæ ¡æ£ãããããšã§ãããããã¯éåžžã«æé»çãªãã¥ã¢ã³ã¹ã«ãªããŸãã
- ã»ãšãã©ã®ããŒã¿ããŒã¹ã§ã¯ãšãªãå®è¡ããã«ã¯ãæåŸã®ã¬ã³ãŒãã®ã€ã³ããã¯ã¹ã§ã¯ãªãã«ãŠã³ããæž¡ãå¿ èŠããããããXNUMX çªç®ã®ãªãã·ã§ã³ã¯ãŸã£ããæå³ããããŸããã endIndex ãã startIndex ãæžç®ããããšã¯åçŽãªç®è¡æŒç®ãããããŸããããããã§ã¯äžèŠã§ãã
ããã§ãããªãã»ãã + æ°éãã«ããããŒãžã³ã°ã®å®è£ ã®æ¬ ç¹ã«ã€ããŠèª¬æããå¿ èŠããããŸãã
- åŸç¶ã®åããŒãžã®ååŸã¯ãåã®ããŒãžãããã³ã¹ããšæéãããããŸããããã¯ãããŒã¿ããŒã¹ãæ€çŽ¢ãšäžŠã¹æ¿ãã®åºæºã«åŸã£ãŠãã¹ãŠã®ã¬ã³ãŒãããæåããã調ã¹ãŠãããç®çã®ãã©ã°ã¡ã³ãã§åæ¢ããå¿ èŠãããããã§ãã
- ãã¹ãŠã® DBMS ããã®ã¢ãããŒãããµããŒãã§ããããã§ã¯ãããŸããã
代æ¿æ段ã¯ãããŸãããããããäžå®å šã§ãã ãããã®ã¢ãããŒãã® XNUMX ã€ç®ã¯ãããŒã»ãã ããŒãžã³ã°ããŸãã¯ãã·ãŒã¯ ã¡ãœããããšåŒã°ãã次ã®ãããªãã®ã§ããäžéšãåä¿¡ããåŸãããŒãžã®æåŸã®ã¬ã³ãŒãã®ãã£ãŒã«ãå€ãèšæ¶ãããããã䜿çšããŠããŒã¿ãååŸã§ããŸãã次ã®éšåã ããšãã°ã次ã®ã¯ãšãªãå®è¡ããŸããã
SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
ãããŠæåŸã®ã¬ã³ãŒãã§ã¯ã泚ææ¥ã®å€ã2014-06-29ããååŸããŸããã 次ã«ã次ã®ããŒãžãååŸããã«ã¯ã次ã®ããšãè©ŠããŠãã ããã
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate < '2014-06-29'
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
åé¡ã¯ãOrderDate ãåºæã§ã¯ãªããã£ãŒã«ãã§ãããäžã§æå®ããæ¡ä»¶ã§ã¯å€ãã®å¿ èŠãªè¡ãæ¬ èœããå¯èœæ§ãããããšã§ãã ãã®ã¯ãšãªã«æ確ããè¿œå ããã«ã¯ãæ¡ä»¶ã«äžæã®ãã£ãŒã«ããè¿œå ããå¿ èŠããããŸã (75074 ãæåã®éšåã®äž»ããŒã®æåŸã®å€ã§ãããšä»®å®ããŸã)ã
SELECT * FROM Sales.SalesOrderHeader
WHERE (OrderDate = '2014-06-29' AND SalesOrderID < 75074)
OR (OrderDate < '2014-06-29')
ORDER BY OrderDate DESC, SalesOrderID DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
ãã®ãªãã·ã§ã³ã¯æ£ããæ©èœããŸãããæ¡ä»¶ã« OR æŒç®åãå«ãŸãããããäžè¬ã«æé©åãå°é£ã«ãªããŸãã OrderDate ãå¢å ããã«ã€ããŠäž»ããŒã®å€ãå¢å ããå Žåã¯ãSalesOrderID ã«ãããã£ã«ã¿ãŒã®ã¿ãæ®ãããšã§æ¡ä»¶ãç°¡çŽ åã§ããŸãã ãã ããäž»ããŒã®å€ãšçµæã®äžŠã¹æ¿ãã«äœ¿çšããããã£ãŒã«ãã®éã«å³å¯ãªçžé¢é¢ä¿ããªãå Žåãã»ãšãã©ã® DBMS ã§ã¯ãã® OR ãåé¿ã§ããŸããã ç§ãç¥ã£ãŠããäŸå€ã¯ PostgreSQL ã§ãã¿ãã«æ¯èŒãå®å šã«ãµããŒãããŠãããäžèšã®æ¡ä»¶ã¯ãWHERE (OrderDate, SalesOrderID) < ('2014-06-29', 75074)ããšããŠèšè¿°ã§ããŸãã ããã XNUMX ã€ã®ãã£ãŒã«ããæã€è€åããŒãããã°ããã®ãããªã¯ãšãªã¯ããªãç°¡åã«ãªãã¯ãã§ãã
XNUMX çªç®ã®ä»£æ¿ã¢ãããŒãã¯ãããšãã°æ¬¡ã®ãšããã§ãã
è€éãªãã£ã«ã¿ãªã³ã°
ã¿ã¹ã¯ãããã«è€éã«ããŠã¿ãŸãããã ãªã³ã©ã€ã³ ã¹ãã¢ã§ã¯èª°ããããç¥ã£ãŠããããããããã¡ã»ããæ€çŽ¢ãå®è£ ããå¿ èŠããããšããŸãã ãã®å Žåãorders ããŒãã«ã«åºã¥ãäžèšã®äŸã¯ããŸã説æçã§ã¯ãªããããAdventureWorks ããŒã¿ããŒã¹ã® Product ããŒãã«ã«åãæ¿ããŠã¿ãŸãããã
ãã¡ã»ããæ€çŽ¢ã®èåŸã«ããèãæ¹ã¯äœã§ãã? å®éã«ã¯ãåãã£ã«ã¿ãŒèŠçŽ ã«ã€ããŠããã®åºæºãæºããã¬ã³ãŒãã®æ°ã衚瀺ãããŸãã ä»ã®ãã¹ãŠã®ã«ããŽãªã§éžæããããã£ã«ã¿ãèæ
®ããŠ.
ããšãã°ããã®äŸã§ [Bikes] ã«ããŽãªãš [Black] ã®è²ãéžæãããšãããŒãã«ã«ã¯é»ããã€ã¯ã®ã¿ã衚瀺ãããŸãã
- ã«ããŽãª ã°ã«ãŒãã®ååºæºã«ã€ããŠããã®ã«ããŽãªã®è£œåã®æ°ãé»ã§è¡šç€ºãããŸãã
- ãè²ãã°ã«ãŒãã®ååºæºã«ã€ããŠããã®è²ã®èªè»¢è»ã®æ°ã衚瀺ãããŸãã
ãã®ãããªæ¡ä»¶ã§ã®çµæåºåã®äŸã次ã«ç€ºããŸãã
ãè¡£é¡ãã«ããŽãªãŒããã§ãã¯ãããšãåšåº«ã®ããé»è²ã®è¡£é¡ãè¡šã«è¡šç€ºãããŸãã ãã«ã©ãŒãã»ã¯ã·ã§ã³ã®é»è²è£œåã®æ°ãæ°ããæ¡ä»¶ã«åŸã£ãŠåèšç®ãããŸããããã«ããŽãªãã»ã¯ã·ã§ã³ã®ã¿äœãå€ãããŸãã...ãããã®äŸãéåžžã®ãã¡ã»ããæ€çŽ¢ã¢ã«ãŽãªãºã ãç解ããã®ã«ååã§ããããšãé¡ã£ãŠããŸãã
ããã§ãããããªã¬ãŒã·ã§ãã« ããŒã¹ã§ã©ã®ããã«å®è£ ã§ããããæ³åããŠã¿ãŸãããã ã«ããŽãªãè²ãªã©ã®åºæºã®åã°ã«ãŒãã«ã¯ãåå¥ã®ã¯ãšãªãå¿ èŠã«ãªããŸãã
SELECT pc.ProductCategoryID, pc.Name, COUNT(1) FROM Production.Product p
INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
INNER JOIN Production.ProductCategory pc ON ps.ProductCategoryID = pc.ProductCategoryID
WHERE p.Color = 'Black'
GROUP BY pc.ProductCategoryID, pc.Name
ORDER BY COUNT(1) DESC
SELECT Color, COUNT(1) FROM Production.Product p
INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE ps.ProductCategoryID = 1 --Bikes
GROUP BY Color
ORDER BY COUNT(1) DESC
ãã®è§£æ±ºçã®äœãåé¡ãªã®ã§ãããã? ããã¯éåžžã«åçŽã§ãããããŸãæ¡åŒµã§ããŸããã åãã£ã«ã¿ãŒ ã»ã¯ã·ã§ã³ã§ã¯æ°éãèšç®ããããã®åå¥ã®ã¯ãšãªãå¿
èŠã§ããããããã®ã¯ãšãªã¯ããã»ã©ç°¡åã§ã¯ãããŸããã ãªã³ã©ã€ã³ ã¹ãã¢ã§ã¯ãã«ããŽãªã«ãã£ãŠã¯æ°åã®ãã£ã«ã¿ãŒ ã»ã¯ã·ã§ã³ãååšããå Žåãããããããããã©ãŒãã³ã¹ã«é倧ãªåé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
éåžžããããã®ã¹ããŒãã¡ã³ãã®åŸã«ãããã€ãã®è§£æ±ºçãæäŸãããŸãã
- ãã¹ãŠã®æ°éã«ãŠã³ãã XNUMX ã€ã®ã¯ãšãªã«çµåããŸãã æè¡çã«ã¯ããã㯠UNION ããŒã¯ãŒãã䜿çšããŠå¯èœã§ãããããã©ãŒãã³ã¹ã«ã¯ããŸã圹ç«ã¡ãŸãããããŒã¿ããŒã¹ã¯äŸç¶ãšããŠåãã©ã°ã¡ã³ããæåããå®è¡ããå¿ èŠããããŸãã
- ãã£ãã·ã¥éã ç§ãåé¡ã説æãããã³ã«ãã»ãŒæ¯åããã®ããšã瀺åãããŸãã 泚æããŠããã ãããã®ã¯ãããã¯äžè¬çã«ã¯äžå¯èœã§ãããšããããšã§ãã 10 åã®ããã¡ã»ãããããããããããã« 5 ã€ã®å€ããããšããŸãã ããã¯ãåããªã³ã©ã€ã³ã¹ãã¢ã§èŠããããã®ãšæ¯èŒãããšãéåžžã«ãæ§ãããªãç¶æ³ã§ãã 9 ã€ã®ãã¡ã»ããèŠçŽ ã®éžæã¯ãä»ã® 50 ã€ã®ãã¡ã»ããèŠçŽ ã®éã«åœ±é¿ããŸããã€ãŸããåºæºã®çµã¿åããããšã«éãç°ãªãå¯èœæ§ããããŸãã ãã®äŸã§ã¯ããŠãŒã¶ãŒãéžæã§ããåºæºãåèš 250 ãããããå¯èœãªçµã¿åãã㯠5 éãã«ãªããŸããããã®ãããªããŒã¿ã®é åãåããã®ã«ååãªã¡ã¢ãªãæéããããŸããã ããã§ããã¹ãŠã®çµã¿åãããçŸå®ã§ããããã§ã¯ãªãããŠãŒã¶ãŒã 10 ïœ XNUMX åãè¶ ããåºæºãéžæããããšã¯ãã£ãã«ãªããšåè«ããããšãã§ããŸãã ã¯ããé 延èªã¿èŸŒã¿ãå®è¡ããŠããããŸã§ã«éžæããããã®ã ãããã£ãã·ã¥ããããšã¯å¯èœã§ãããéžæã®æ°ãå¢ããã»ã©ããã®ãããªãã£ãã·ã¥ã®å¹çã¯äœäžããå¿çæéã®åé¡ãããé¡èã«ãªããŸã (ç¹ã«ãããŒã¿ã»ããã¯å®æçã«å€æŽãããŸã)ã
幞ããªããšã«ããã®ãããªåé¡ã«ã¯ã倧éã®ããŒã¿ã«å¯ŸããŠäºæž¬ã©ããã«æ©èœããéåžžã«å¹æçãªè§£æ±ºçãé·ãéååšããŠããŸããã ãããã®ãªãã·ã§ã³ã®ãããã«ãããŠãããã¡ã»ããã®åèšç®ãšçµæããŒãžã®åä¿¡ããµãŒããŒãžã® XNUMX ã€ã®äžŠè¡åŒã³åºãã«åå²ãããã¡ã»ããã«ããããŒã¿ã®ããŒãã衚瀺ãã劚ããªããããã«ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ãç·šæããããšãçã«ããªã£ãŠããŸããã®æ€çŽ¢çµæã
- ããã¡ã»ãããã®å®å šãªåèšç®ãåŒã³åºãã®ã¯ãã§ããã ããŸãã§ãã ããšãã°ãæ€çŽ¢æ¡ä»¶ãå€æŽããããã³ã«ãã¹ãŠãåèšç®ããã®ã§ã¯ãªããçŸåšã®æ¡ä»¶ã«äžèŽããçµæã®ç·æ°ãèŠã€ããŠããŠãŒã¶ãŒã«ã1425 件ã®ã¬ã³ãŒããèŠã€ãããŸããã衚瀺ããŸãã?ããšè¡šç€ºããããã«æ±ããŸãã ãŠãŒã¶ãŒã¯æ€çŽ¢çšèªã®å€æŽãç¶ããããã衚瀺ããã¿ã³ãã¯ãªãã¯ããããšãã§ããŸãã XNUMX çªç®ã®ã±ãŒã¹ã®å Žåã®ã¿ãçµæãååŸãããã¹ãŠã®ããã¡ã»ãããã§æ°éãåèšç®ãããã¹ãŠã®ãªã¯ãšã¹ããå®è¡ãããŸãã ãã®å Žåãç°¡åã«ãããããã«ãçµæã®ç·æ°ãååŸãããªã¯ãšã¹ããšãã®æé©åã«å¯ŸåŠããå¿ èŠããããŸãã ãã®æ¹æ³ã¯ãå€ãã®å°èŠæš¡ãªã³ã©ã€ã³ ã¹ãã¢ã§èŠãããŸãã æããã«ãããã¯ãã®åé¡ã®äžèœè¬ã§ã¯ãããŸããããåçŽãªå Žåã«ã¯è¯ã劥åçã«ãªãå¯èœæ§ããããŸãã
- SolrãElasticSearchãSphinx ãªã©ã®æ€çŽ¢ãšã³ãžã³ã䜿çšããŠçµæãæ€çŽ¢ãããã¡ã»ãããã«ãŠã³ãããŸãã ãããã¯ãã¹ãŠããã¡ã»ããããæ§ç¯ããããã«èšèšãããŠãããéã€ã³ããã¯ã¹ã«ãããããéåžžã«å¹ççã«å®è¡ã§ããŸãã æ€çŽ¢ãšã³ãžã³ãã©ã®ããã«æ©èœããã®ãããã®ãããªå Žåã«æ±çšããŒã¿ããŒã¹ãããæ€çŽ¢ãšã³ãžã³ãæå¹ã§ããçç±ãã©ã®ãããªæ
£è¡ãšèœãšãç©Žãããã®ãââãããã¯å¥ã®èšäºã®ãããã¯ã§ãã ããã§æ³šæããŠããã ãããã®ã¯ãæ€çŽ¢ãšã³ãžã³ã¯ã¡ã€ã³ ããŒã¿ ã¹ãã¬ãŒãžã®ä»£ããã«ã¯ãªããªããšããããšã§ããæ€çŽ¢ãšã³ãžã³ã¯è¿œå ãšããŠäœ¿çšãããæ€çŽ¢ã«é¢é£ããã¡ã€ã³ ããŒã¿ããŒã¹ã®å€æŽã¯æ€çŽ¢ã€ã³ããã¯ã¹ã«åæãããŸãã æ€çŽ¢ãšã³ãžã³ã¯éåžžãæ€çŽ¢ãšã³ãžã³ãšã®ã¿å¯Ÿè©±ããã¡ã€ã³ ããŒã¿ããŒã¹ã«ã¯ã¢ã¯ã»ã¹ããŸããã ããã§æãéèŠãªç¹ã® XNUMX ã€ã¯ããã®åæã確å®ã«è¡ãæ¹æ³ã§ãã ããã¯ãã¹ãŠãåå¿æéãã®èŠä»¶ã«ãã£ãŠæ±ºãŸããŸãã ã¡ã€ã³ ããŒã¿ããŒã¹ã®å€æŽãšãã®å€æŽãæ€çŽ¢ã§ãçŸããããŸã§ã®æéãéèŠã§ãªãå Žåã¯ãæè¿å€æŽãããã¬ã³ãŒããæ°åããšã«æ€çŽ¢ããã€ã³ããã¯ã¹ãäœæãããµãŒãã¹ãäœæã§ããŸãã å¿çæéãã§ããã ãçããããå Žåã¯ã次ã®ãããªãã®ãå®è£
ã§ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³éä¿¡ããã¯ã¹ æ€çŽ¢ãµãŒãã¹ã«æŽæ°ãéä¿¡ããŸãã
æèŠ
- ãµãŒããŒåŽã®ããŒãžã³ã°ã®å®è£
ã¯éåžžã«è€éã§ãããæ¥éã«æé·ããããŒã¿ ã»ãããŸãã¯åçŽã«å€§èŠæš¡ãªããŒã¿ ã»ããã®å Žåã«ã®ã¿æå³ããããŸãã ã倧ããããŸãã¯ãæ¥æé·ããŠããããè©äŸ¡ããæ¹æ³ã«ã€ããŠå®å
šã«æ£ç¢ºãªã¬ã·ãã¯ãããŸããããç§ã¯æ¬¡ã®ã¢ãããŒãã«åŸããŸãã
- ãµãŒããŒæéãšãããã¯ãŒã¯éä¿¡ãèæ ®ããŠãããŒã¿ã®å®å šãªã³ã¬ã¯ã·ã§ã³ãåä¿¡ããããšãããã©ãŒãã³ã¹èŠä»¶ãæ£åžžã«æºããå ŽåããµãŒããŒåŽã§ããŒãžã³ã°ãå®è£ ããæå³ã¯ãããŸããã
- ããŒã¿ã¯å°ãªããã®ã®ãããŒã¿åéã¯ç¶ç¶çã«å¢å ããŠãããããè¿ãå°æ¥ã«ã¯ããã©ãŒãã³ã¹ã®åé¡ãçºçããªãç¶æ³ãäºæ³ãããå ŽåããããŸãã å°æ¥ã®ããŒã¿ã»ãããåã®ç¹ãæºãããªããªãå¯èœæ§ãããå Žåã¯ãããã«ããŒãžã³ã°ãéå§ããããšããå§ãããŸãã
- ããžãã¹åŽã«çµæã®ç·æ°ã衚瀺ããããããŒãžçªå·ã衚瀺ããããããšããå³æ ŒãªèŠä»¶ããªããã·ã¹ãã ã«æ€çŽ¢ãšã³ãžã³ããªãå Žåã¯ããããã®ç¹ãå®è£ ããããªãã·ã§ã³ #2 ãæ€èšããããšããå§ãããŸãã
- ãã¡ã»ããæ€çŽ¢ã«å¯Ÿããæ確ãªèŠä»¶ãããå Žåãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªã XNUMX ã€ã®ãªãã·ã§ã³ããããŸãã
- æ€çŽ¢åºæºãå€æŽããããã³ã«ãã¹ãŠã®æ°éãåèšç®ããªãã§ãã ããã
- SolrãElasticSearchãSphinx ãªã©ã®æ€çŽ¢ãšã³ãžã³ã䜿çšããŸãã ãã ããããã¯ã¡ã€ã³ ããŒã¿ããŒã¹ã®ä»£ããã«ã¯ãªãããæ€çŽ¢åé¡ã解決ããããã«ã¡ã€ã³ ã¹ãã¬ãŒãžãžã®è¿œå ãšããŠäœ¿çšããå¿ èŠãããããšãç解ããå¿ èŠããããŸãã
- ãŸãããã¡ã»ããæ€çŽ¢ã®å Žåãæ€çŽ¢çµæããŒãžã®ååŸãšã«ãŠã³ãã XNUMX ã€ã®äžŠåãªã¯ãšã¹ãã«åå²ããããšãåççã§ãã ãŠãŒã¶ãŒã«ãšã£ãŠã¯çµæã®æ¹ãéèŠã§ãããæ°éãæ°ããããšã¯çµæãåŸããããæéããããå ŽåããããŸãã
- æ€çŽ¢ã« SQL ããŒã¿ããŒã¹ã䜿çšããŠããå Žåããã®éšåã«é¢é£ããã³ãŒãå€æŽã¯ãé©åãªéã®ããŒã¿ (ã©ã€ã ããŒã¿ããŒã¹ã®éãè¶ ãã) ã§ã®ããã©ãŒãã³ã¹ã«ã€ããŠååã«ãã¹ãããå¿ èŠããããŸãã ãŸããããŒã¿ããŒã¹ã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãç¹ã«ãã©ã€ããã€ã³ã¹ã¿ã³ã¹ã§ã¯ãšãªå®è¡æéã®ç£èŠã䜿çšããããšããå§ãããŸãã éçºæ®µéã§ã¯ã¯ãšãª ãã©ã³ã«åé¡ããªãã£ããšããŠããããŒã¿éãå¢å ãããšç¶æ³ãèããå€åããå¯èœæ§ããããŸãã
åºæïŒ habr.com