MS_SQLServerIndex - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒSQL ServerïŒ
- SQL Server ã®ã€ã³ããã¯ã¹
- SQL Server ã®ãã¡ã€ã«ã»ã°ã«ãŒã / SQL Server ããŒãã£ã·ã§ã³åå² / SQL Server ã®ãªããã£ãã€ã¶
ã€ã³ããã¯ã¹ããªãããŒãã«ã«ã¯åºæ¬çã«ããŒã¿ã®äžŠã³é ã«ä¿èšŒããªãããã
ãããæ€çŽ¢ããå Žåã¯ãæ§èœçã«é
ããããŒãã« ã¹ãã£ã³ããå®è¡ããã
ãã®ãããæ€çŽ¢åŠçã®å¹çåã®ããã«ãæ€çŽ¢æ¡ä»¶ã«å¯Ÿå¿ãããã€ã³ããã¯ã¹ããäœæããã
SQL Server ã®ã€ã³ããã¯ã¹ã«ã¯ã
- ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã
- ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã
- ãã«ããªã³ã° ã€ã³ããã¯ã¹ã
- ãä»å åã€ã³ããã¯ã¹ã
- ãããŒãã£ã·ã§ã³ ã€ã³ããã¯ã¹ãïŒSQL Server ããŒãã£ã·ã§ã³åå²ïŒ
- ãã€ã³ããã¯ã¹ä»ããã¥ãŒã
ã® 6 çš®é¡ã®ã€ã³ããã¯ã¹ãããã
è£è¶³ïŒææ°åïŒãã以å€ã®ã€ã³ããã¯ã¹ïŒ: äžèšã¯è¡ã¹ãã¢ïŒB ããªãŒïŒç³»ã®åé¡ã
çŸåšã¯çšéå¥ã«ä»¥äžãéžæè¢ã«ãªãã
çš®é¡ å°å ¥ çšé åã¹ã㢠ã€ã³ããã¯ã¹ 2012ïŒæŽæ°å¯èœã¯ 2014ãïŒ éèšã»åæç³»ïŒOLAPïŒãååäœã§å§çž®ããããã ã¢ãŒãå®è¡ã§æ¡éãã«éã ãã£ã«ã¿éžæãããã€ã³ããã¯ã¹ 2008 WHEREæ¡ä»¶ä»ãã®éã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãNULLé€å€ãªã©ã§ãµã€ãºãå€§å¹ åæžã¡ã¢ãªæé©åã€ã³ããã¯ã¹ 2014 In-Memory OLTPïŒããã·ã¥ / ç¯å²ïŒ å šææ€çŽ¢ã€ã³ããã¯ã¹ - æç« ã®å šææ€çŽ¢ 空é / XML / JSON - ããããã®åã«å¯Ÿããæ€çŽ¢ ç¹ã«ãã£ã«ã¿éžæãããã€ã³ããã¯ã¹ã¯ã
CREATE NONCLUSTERED INDEX IX_Order_Active ON dbo.Orders (CustomerId) INCLUDE (OrderDate, Amount) WHERE Status = 'Active';ã®ããã«ãå®éã«æ€çŽ¢å¯Ÿè±¡ã«ãªãè¡ã ããã察象ã«ã§ãã
æ¬ããŒãžã§æ±ãéžæåºŠã®åé¡ãåé¿ããæåãªææ®µã§ããã
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã㯠Oracle ã®ãçŽ¢åŒæ§æè¡šããšåãã§ããã
ãé»è©±åž³ã® 50 é³é 玢åŒãã®ããã«ãããŒã¿ãé çªã«äžŠã¹ãããã€ã³ããã¯ã¹ã®ããšãèšãã
-
SQL Server ã§ã¯ã1 ããŒãã«ã«å¯Ÿããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã 1 ã€ã ãäœæå¯èœã
-
SQL Server ã§ã¯ããŒãã«ã«ãäž»ããŒããèšå®ãããšã
èªåçã«ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããäœæãããã -
ãäž»ããŒãããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã«ããããªãã®ã§ããã°ã
äž»ããŒäœææã«NONCLUSTEREDããŒã¯ãŒããæå®ããã
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã㯠Oracle ã®ã玢åŒããšåãã§ããã
ãæžç±ã®çŽ¢åŒãã®ããã«ãããŒã¿ãšã¯å¥ã®é åã«äœãããã€ã³ããã¯ã¹ã®ããšãèšãã
- SQL Server ã§ã¯ã1 ããŒãã«ã«å¯Ÿããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã 249 åãŸã§äœæå¯èœã
è£è¶³ïŒææ°åïŒ: 249 å㯠SQL Server 2005 ãŸã§ã®äžéã§ã
SQL Server 2008 以é㯠999 åãŸã§äœæã§ããã
ãã ããããã¯äžéã§ãã£ãŠæšå¥šã§ã¯ãªãã
ã€ã³ããã¯ã¹ã¯æŽæ°æã®ãªãŒããŒããããšã¹ãã¬ãŒãžãæ¶è²»ããããã
å®åã§ã¯ 1 ããŒãã«ããã 5ã10 åçšåºŠã«åããã®ãç®å®ã
æªäœ¿çšã€ã³ããã¯ã¹ã¯sys.dm_db_index_usage_statsã§æ€åºã§ããã
- ããŒãšããŠæ§æãããŠããã«ã©ã ã®å
šãŠãæ€çŽ¢æ¡ä»¶ã«æå®ãããŠããªããŠãã
ããŒã®å é ããéäžãŸã§ã®ã«ã©ã ãæå®ãããŠããã°ãã€ã³ããã¯ã¹ã䜿ãããã
è£è¶³ïŒåé ãæ±ºå®çã«éèŠïŒ: äžèšã¯ãå é ããé£ç¶ããŠæå®ãããŠããã°ã
ãšããæå³ã§ãããéäžã®åã ããæå®ããŠãã·ãŒã¯ã«ã¯äœ¿ããªããã€ã³ããã¯ã¹
(A, B, C)ã«å¯ŸããŠã
æ€çŽ¢æ¡ä»¶ ã·ãŒã¯å¯åŠ A = ?â A = ? AND B = ?â A = ? AND B = ? AND C = ?â B = ?ÃïŒã¹ãã£ã³ã«ãªãïŒ A = ? AND C = ?â³ïŒ Aã§ã·ãŒã¯ãCã¯æ®äœè¿°èªïŒãã®ãããåé ã¯
ç倿¡ä»¶ã§äœ¿ãå â ç¯å²æ¡ä»¶ã§äœ¿ãå âORDER BYã®å
ã®é ã«çœ®ãã®ãååã
åèãªã³ã¯ã®ãè€åã€ã³ããã¯ã¹ã®æ£ããåã®é åºããåãè¶£æšã
- ãã«ããªã³ã° ã€ã³ããã¯ã¹ããšã¯ããè€åã€ã³ããã¯ã¹ããæãã
- ãã«ããªã³ã° ã€ã³ããã¯ã¹ãã¯ãã€ã³ããã¯ã¹ã«ååŸããŒã¿ãå«ããããšã§ã
ããŒãïŒã®ããŒãžïŒãžã®ãžã£ã³ãã鲿¢ããããšãã§ããæ§èœã®åäžãæåŸ ã§ããã
è£è¶³ïŒçšèªã®æŽçïŒ: å³å¯ã«ã¯ã
ãã«ããªã³ã° ã€ã³ããã¯ã¹ãã¯æ§é ã®ååã§ã¯ãªãã
ããã¯ãšãªã«å¯Ÿããç¶æ ãæãèšèã§ããã
ã¯ãšãªãå¿ èŠãšããåããã¹ãŠãã®ã€ã³ããã¯ã¹ã«å«ãŸããŠããã°ã
ãã®ã€ã³ããã¯ã¹ã¯ããã®ã¯ãšãªãã«ããŒããŠããããšèšãã
å®çŸææ®µãè€åã€ã³ããã¯ã¹ïŒããŒåã«äžŠã¹ãïŒãš
ä»å åã€ã³ããã¯ã¹ïŒINCLUDEïŒã® 2 ã€ããšããé¢ä¿ã«ãªãã
å®è¡ãã©ã³äžã¯ Key Lookup / RID Lookup ãæ¶ããããšã§ç¢ºèªã§ãã
ïŒå®è¡ãã©ã³ã®ã°ã©ãã£ã«ã«è¡šç€ºïŒã
-
ãã«ããªã³ã° ã€ã³ããã¯ã¹ãã«ã¯ã
- ã«ããªã³ã°åãã«ãŒãã»äžéã»ãªãŒã ããŒãžã«å«ãŸããããã
- ã€ã³ããã¯ã¹ ãµã€ãºã倧ãããªãã
- ã¹ãã£ã³ããã·ãŒã¯æã® I/O æ°ãå€ããªãã
- ã€ã³ããã¯ã¹æŽæ°æã®ãªãŒããŒããããé«ããªãã
ãšãã£ãæ§èœäžã®åé¡ãååšããã
- ã«ããªã³ã°åãã«ãŒãã»äžéã»ãªãŒã ããŒãžã«å«ãŸããããã
-
ãããåé¿ããããã«ã
SQL Server 2005 ãããµããŒãããããä»å åã€ã³ããã¯ã¹ãã䜿çšã§ããã -
ãä»å åã€ã³ããã¯ã¹ãã¯ã
- ãã«ããªã³ã° ã€ã³ããã¯ã¹ãã®æ¬ ç¹ãè£ã£ãæ©èœã§ããããã
åºæ¬çã«ãä»å åã€ã³ããã¯ã¹ããå©çšããããšãæšå¥šãããã - å
·äœçã«ã¯ããªãŒãããŒãã«ã®ã¿ã«ã©ã ã远å ããïŒåãä»å ããïŒããšã§ã
ããŒãïŒã®ããŒãžïŒãžã®ãžã£ã³ãã鲿¢ãã€ã€ãã€ã³ããã¯ã¹ã®ãµã€ãºãæŒãããã
- ãã«ããªã³ã° ã€ã³ããã¯ã¹ãã®æ¬ ç¹ãè£ã£ãæ©èœã§ããããã
è£è¶³ïŒ
INCLUDEã®ããäžã€ã®å©ç¹ïŒ:INCLUDEã®åã¯
ããŒã§ã¯ãªãããã
- ããŒã®ãµã€ãºå¶éïŒ900 ãã€ã / 1700 ãã€ãïŒã«ã«ãŠã³ããããªã
nvarchar(max)ãªã©ããŒã«ã§ããªãåãå«ãããããšããå©ç¹ãããã
ãæ€çŽ¢æ¡ä»¶ã»çµåæ¡ä»¶ã»ORDER BYã«äœ¿ãåã¯ããŒãžã
SELECTã§è¿ãã ãã®åã¯INCLUDEãžããèšèšã®æéã«ãªãã
SQL Server ããŒãã£ã·ã§ã³åå²
-
ãã¥ãŒã«äžæãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããä»äžããããšã§ã
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããæã€ããŒãã«ã®ããã«ã
ãã¥ãŒã«çµæã»ãããæ ŒçŽãããã®ã§ããïŒã€ãŸãå®äœãååšããïŒã -
ãã®ãããç¹ã«çµåã»éèšåŠçã䌎ãåç §ã¯ãšãªã§æ§èœåäžãæåŸ ã§ããã
-
ãã€ã³ããã¯ã¹ä»ããã¥ãŒãã«ã¯ããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã远å ã§ããã
ã€ã³ããã¯ã¹ã®æ§é ã«ã€ããŠèª¬æããã
-
ã€ã³ããã¯ã¹ã¯ãã€ã³ããã¯ã¹ ããŒãžãããæ§æãããŠããããã€ã³ããã¯ã¹ ããŒãžãã¯ã
- åäœå±€ã®ããŒãžãç¹ãããã€ã³ã¿ããšã
- äžäœå±€ã®ããŒãžãžã®ããã€ã³ã¿ã
- ããã³ãããŒå€ã
ã«ãã£ãŠæ§æãããã
-
ãã€ã³ããã¯ã¹ ããŒãžãã®
- æäžäœå±€ã¯ãã«ãŒã ã¬ãã« ããŒãžã
- æäžäœå±€ã¯ããªãŒã ã¬ãã« ããŒãžã
- ãã«ãŒã ã¬ãã« ããŒãžããšããªãŒã ã¬ãã« ããŒãžãã®
äžéã®ã¬ãã«ã¯ãäžéã¬ãã« ããŒãžããšåŒã¶ã

次ã«ããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®æ§é ã«ã€ããŠèª¬æããã
- ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã¯ãããŒãã«ã§ãã¯ã©ã¹ã¿åããŒ
ïŒã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãäœæããéã«äœ¿çšããããŒïŒããèšå®ãããšã
ãã®ããŒå€ã®æé ã«ããŒã¿ãäžŠã³æ¿ããããŠã
ããªãŒã ã¬ãã« ããŒãžããå®éã®ãããŒã¿ ããŒãžããšããŠæ§æãããã

ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã§ãã£ã¹ã¯ I/O ã®ãã¥ãŒãã³ã°ãå¯èœã§ããã
-
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã§å¿ èŠãšãªã RID LookUp ãšããåŠçãäžèŠã§ã
ãã®åæ§èœãè¯ãã -
ããŒãã«ã«å¯ŸããŠãç¯å²æ€çŽ¢ãããé æ¬¡ã¢ã¯ã»ã¹ãåŠçãããéã«ã
ç®çã®ããŒã¿ãåããããŒã¿ ããŒãžãã«ãã確çãå€ããªã
ãã£ã¹ã¯ ãããã®ç§»åãå°ãªããªãã -
ãéžæåºŠã®äœãæ å ±ãïŒåŸè¿°ïŒã§ãã£ãŠãã
ãç¯å²æ€çŽ¢ãããé æ¬¡ã¢ã¯ã»ã¹ãã§ã广ãåºãåŸãã€ã³ããã¯ã¹ã§ãããšèšããã -
SQL Server ã§ã¯æ€çŽ¢ã§å€çšãããïŒãšæ³å®ãããïŒäž»ããŒã«ã¯ã
ããã©ã«ãã§ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããä»äžãããã-
ãããããã®æ¹æ³ãå¿ ãããé©åã§ãããšããããšã«ã¯ãªããªãã
äŸãã°ãäž»ããŒä»¥å€ã®ããŒã䜿çšããç¯å²ã¹ãã£ã³æ€çŽ¢ã®æ§èœã®åäžã
åªå ããããããªããŒãã«ã§ã¯ãäž»ããŒã«ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããä»äžãã
ãç¯å²ã¹ãã£ã³æ€çŽ¢ãåŠççšã®ããŒã«ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã䜿çšããæ¹ãã
å šäœæé©åã«ç¹ããããšãããã -
ã€ã³ãµã€ã Microsoft SQL Server 2005 ã¯ãšãªãã¥ãŒãã³ã°ïŒæé©åç·š
第4ç« ïŒ ã¯ãšãªããã©ãŒãã³ã¹ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŒãã«ãäž»ããŒå¶çŽã§å®£èšãããšãèŠå®ã§ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã
äž»ããŒåã«äœæãããŸããããã®æ¹æ³ãåžžã«æé©ã§ãããšã¯éããŸããã
ãã®åã瀺ããšãããäž»ããŒã¯äžæã§ãããæ¡ä»¶ãæºããåäžè¡ãæ€çŽ¢ããå Žåã¯ã
éã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãéåžžã«å¹ççã§ãã
ãäž»ããŒã®äžææ§ã¯ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã§ãé©çšã§ããããã
ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã¯ãäž»ããŒå¶çŽã宣èšãããšãã«
NONCLUSTEREDã®ããŒã¯ãŒãã远å ããŠã
ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãæå¹ãªãã®ã«å¯ŸããŠç¢ºä¿ããŠãããŸããã
-
ãŸãã以äžã®ããŒã«ã¯é©ããŠããªããšèšãããŠããã
-
é »ç¹ã«å€æŽãããå
ç©ççãªäžŠã³æ¿ããå¿ èŠã«ãªãããã -
åºç¯ãªããŒïŒè€æ°ã®åã»è€æ°ã®ãµã€ãºã®å€§ããªåãçµã¿åãããããŒïŒ
- ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããæã€ããŒãã«ã«è¿œå ãã
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ãªãŒã ããŒãžã«ã¯ã
è¡èå¥åã§ã¯ãªãããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ããŒåç §ãæ ŒçŽãããïŒåŸè¿°ïŒã - ãã®ããããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ããŒã®ãµã€ãºã倧ãããªããšã
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ãµã€ãºã倧ãããªãããã
- ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããæã€ããŒãã«ã«è¿œå ãã
è£è¶³ïŒã¯ã©ã¹ã¿åããŒã®éžå®åºæºïŒ: äžèšã«ãã©ã³ãã ãªå€ã§ãªãããšãã
å ãã 4 æ¡ä»¶ãå®çªã®æéã§ããã
æ¡ä»¶ çç± çãïŒnarrowïŒ å šéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã«è€è£œããããã äžæïŒuniqueïŒ äžæã§ãªããšå éšã§ 4 ãã€ãã® uniquifier ãä»å ããã éçïŒstaticïŒ å€æŽããããšè¡ã®ç©çç§»åãçºçãã å調å¢å ïŒever-increasingïŒ æ«å°Ÿã«è¿œèšãããããããŒãžåå²ãèµ·ããªã 4 ã€ç®ã®èгç¹ãããã©ã³ãã ãª
uniqueidentifierïŒGUIDïŒã
ã¯ã©ã¹ã¿åããŒã«ããã®ã¯é¿ããã¹ããšããã
ïŒæ¿å ¥äœçœ®ãæ£ãã°ããããŒãžåå²ãšæçåãå€çºããïŒã
ã©ãããŠã GUID ãå¿ èŠãªãNEWSEQUENTIALID()ã䜿ããã
GUID ã¯éã¯ã©ã¹ã¿åã®äžæã€ã³ããã¯ã¹ã«ããŠ
ã¯ã©ã¹ã¿åããŒã¯é£çªã®ä»£çããŒã«ãããéã«ãå調å¢å ããŒãžã®é«é »åºŠãªæ¿å ¥ã¯
**æ«å°ŸããŒãžãžã®ç«¶åïŒã©ããç«¶åãããã ã¹ãããïŒ**ãçãããšãããã
極端ãªé«ã¹ã«ãŒãããç°å¢ã§ã¯ããã®å¯Ÿçãå¥éå¿ èŠã«ãªãã
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãäœææã«ã¯ã
å®éã®ããŒã¿ïŒããŒãïŒãäžŠã¹æ¿ããçµæãæ ŒçŽããŠããããã®äœæ¥é åãšããŠã
ããŒãã« ãµã€ãºã®çŽ 1.5 åã®ç©ºãé åãå¿
èŠã«ãªãããæ³šæãå¿
èŠã§ããã
- ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã®èšèšã¬ã€ãã©ã€ã³
https://learn.microsoft.com/ja-jp/sql/relational-databases/sql-server-index-design-guide
次ã«ããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®æ§é ã«ã€ããŠèª¬æããã
-
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã¯ãäžè¬çãã€æ±çšçãªã€ã³ããã¯ã¹ã§ããã
ããªãŒã ã¬ãã« ããŒãžãã«ã¯ãè¡èå¥åãæ ŒçŽãããã -
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã§ã¯ãããªãŒã ã¬ãã« ããŒãžããã
ããŒãïŒã®ããŒãžïŒäžã®è¡æ å ±ãåŒãããã®ãRID LookUp ãšèšãåŠçãå¿ èŠãšãªãã- ãã®ãããããªãŒã ã¬ãã« ããŒãžã â ããŒãïŒã®ããŒãžïŒãžã®ãžã£ã³ã
ïŒããã RID LookUp ãšèšããå Žåã«ãã£ãŠã¯ãã£ã¹ã¯ ãããã®ç§»åãèŠããïŒ
ãå¿ èŠã«ãªããããããŒã䜿çšããç¯å²ã¹ãã£ã³æ€çŽ¢ã§ã
ããŒã¿ãåéããã¯ãšãªã®æ§èœã¯ãä»¶æ°ãå€ããªãã»ã©åäžããªãã - ãŸãããéžæåºŠã®äœãæ
å ±ãïŒåŸè¿°ïŒãåæ§ã«ã
ç¯å²ã¹ãã£ã³æ€çŽ¢æ§èœãåäžããªããã广ãåºãªãã
- ãã®ãããããªãŒã ã¬ãã« ããŒãžã â ããŒãïŒã®ããŒãžïŒãžã®ãžã£ã³ã
-
ãŸãããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã¯ã
- ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããååšããªãå Žå
- ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããååšããå Žå
ã§æ§é ãç°ãªãã
-
éã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã®ãã¶ã€ã³ ã¬ã€ãã©ã€ã³
https://learn.microsoft.com/ja-jp/sql/relational-databases/sql-server-index-design-guide
-
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããååšããªããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®
ããªãŒã ã¬ãã« ããŒãžãã¯ãã€ã³ããã¯ã¹ ããŒãžãã§ããã -
ãããŒã¿ ããŒãžãã¯ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããäœæããå Žåã®
ãããŒã¿ ããŒãžããšã¯æ§é ãç°ãªããããªã³ã¯ ãªã¹ããã¯ãããªãã- ãã®ãããªãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ãããŒã¿ ããŒãžãã®éãŸãã
ãããŒãããšåŒã¶ã - ãããŒããã§ã¯ãããŒã¿ã®è¡ã®é çªã¯ç¹å®ã®é åºã§ã¯æ ŒçŽãããã
ãããŒã¿ ããŒãžãã«ãç¹å®ã®é åºã¯ãªãã
- ãã®ãããªãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ãããŒã¿ ããŒãžãã®éãŸãã
-
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããååšããªããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã§ã®
ããªãŒã ã¬ãã«ïŒã€ã³ããã¯ã¹ ããŒãžïŒãã§ã¯ãã€ã³ã¿ãšããŠ
è¡èå¥åïŒãã¡ã€ã« IDãããŒãž IDãè¡ IDïŒãæ ŒçŽããŠããã
ãã®è¡èå¥åã䜿ã£ãŠãããŒãããžãžã£ã³ãããæ€çŽ¢å¯Ÿè±¡ããŒã¿ãæ¢ãåºãã

-
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããååšãããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®
ããªãŒã ã¬ãã« ããŒãžãã¯åæ§ã«ãã€ã³ããã¯ã¹ ããŒãžãã§ãããã
ããã€ã³ã¿ããšããŠãè¡èå¥åãã§ã¯ãªããã¯ã©ã¹ã¿åããŒãã®å€ãæ ŒçŽããŠããã -
ãã®ããããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããååšãããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã§ã®æ€çŽ¢ã¯ã
- æåã«ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã䜿çšããŠæ€çŽ¢ãã
- ããªãŒã ã¬ãã« ããŒãžãã§ååŸãããã¯ã©ã¹ã¿åããŒãã®å€ã䜿çšããŠ
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããæ€çŽ¢ããã - ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®ããŒã䜿çšããŠãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®
ããŒã®ã¿ååŸããå Žåã¯ãéåžžã«é«éã

è£è¶³ïŒçšèªïŒ: ãã® 2 段éã®æ€çŽ¢ã¯ãå®è¡ãã©ã³äžã§ã¯
ããŒãã®å Žåã RID Lookupã
ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã®å Žåã Key Lookup ãšããŠçŸããã
ã©ã¡ããã1 è¡ããšã«ã©ã³ãã I/O ãçºçãããããã
ä»¶æ°ãå¢ãããšãªããã£ãã€ã¶ã¯
ã€ã³ããã¯ã¹ã諊ããŠããŒãã«å šäœãã¹ãã£ã³ãããã©ã³ã«åãæ¿ãã
ïŒtipping point ãšåŒã°ããïŒã
ãã€ã³ããã¯ã¹ãããã®ã«ã¹ãã£ã³ããããå Žåã®äž»èŠãªåå ã® 1 ã€ã§ã
INCLUDEã§ã«ããŒããã°è§£æ¶ããããšãå€ãã
-
ãã«ããªã³ã° ã€ã³ããã¯ã¹ãã¯ã以äžã«ããæ§èœã®åäžãæåŸ ã§ããã
- æåã«æå®ãããåãããŒã«ããŠãæšæ§é ãæ§ç¯ãã
- 以éã«æå®ãããåïŒã«ããªã³ã°åïŒãã«ãŒãã»äžéã»ãªãŒã ããŒãžã«å«ããã
- ããã«ãããã«ããªã³ã°åã«å¯ŸããŠã¯ RID LookUp ãããã«åŠçãå¯èœãšãªãã
-
äŸãã°ãäžèš DDL ã§ããã«ããªã³ã° ã€ã³ããã¯ã¹ããäœæã§ããã
CREATE INDEX index_name
ON table_name(column1, column2, column3)- ãã®å Žåã
-
column1ãããŒã«ããŠãæšæ§é ãæ§ç¯ããã - ã«ããªã³ã°åãšããŠ
column2ãcolumn3ã
ã«ãŒãã»äžéã»ãªãŒã ããŒãžã«å«ããããã
-
ç§»è¡ã¡ã¢ïŒèª€åïŒ: å ããŒãžã®ãã«ããªã³ã¯åãã¯ãã«ããªã³ã°åãã®èª€èšã
- äŸãã°ãäžèš DDL ã§ããä»å åã€ã³ããã¯ã¹ããäœæã§ããã
CREATE INDEX index_name
ON table_name (column1)
INCLUDE(column2, column3)-
ãã®å Žåã
-
column1ãããŒã«ããŠãæšæ§é ãæ§ç¯ããã - ä»å åãšããŠã
column2ãcolumn3ããªãŒã ããŒãžã«ã®ã¿å«ããããã
-
-
ä»å åã€ã³ããã¯ã¹
https://learn.microsoft.com/ja-jp/sql/relational-databases/indexes/create-indexes-with-included-columns
SQL Server ããŒãã£ã·ã§ã³åå²
-
GROUP BYå¥ã䜿çšããéèšåŠçã§æå®ãããããŒã®
éžæåºŠãé«ãïŒè¥ããã¯äžæã®ïŒå Žåã¯ãæ§èœåäžã¯æåŸ ã§ããªãã -
ãŸãããã€ã³ããã¯ã¹ä»ããã¥ãŒãã®åºããŒãã«ã®æŽæ°ãããããšã
- ãã¥ãŒã«æ ŒçŽãããŠããçµæã»ããã®æŽæ°ãå¿
èŠãšãªãããã
æŽæ°åŠçãé »ç¹ãªãã¥ãŒã«å¯ŸããŠãã€ã³ããã¯ã¹ä»ããã¥ãŒããäœæãããš
äœèšã«ã³ã¹ãããããå Žåãããã®ã§æ³šæããã - ãªããæ¡ä»¶ãæºãããŠããã°ãã€ã³ããã¯ã¹ä»ããã¥ãŒãã®æŽæ°ãå¯èœã§ããã
ãã€ã³ããã¯ã¹ä»ããã¥ãŒãã®æŽæ°ãè¡ãããå ŽåãåºããŒãã«ãæŽæ°ãããã
- ãã¥ãŒã«æ ŒçŽãããŠããçµæã»ããã®æŽæ°ãå¿
èŠãšãªãããã
-
èæ ®ç¹
-
ãã€ã³ããã¯ã¹ä»ããã¥ãŒãã¯ã
FROMå¥ã§ãã€ã³ããã¯ã¹ä»ããã¥ãŒãã
çŽæ¥æå®ããŠããªãã¯ãšãªãããããªããã£ãã€ã¶ã«ããã䜿çšãããããšãããã- SQL Server 2005 ã€ã³ããã¯ã¹ä»ããã¥ãŒã«ããããã©ãŒãã³ã¹ã®åäž
https://learn.microsoft.com/ja-jp/sql/relational-databases/views/create-indexed-views
- SQL Server 2005 ã€ã³ããã¯ã¹ä»ããã¥ãŒã«ããããã©ãŒãã³ã¹ã®åäž
-
ãã€ã³ããã¯ã¹ä»ããã¥ãŒãããããŒãã£ã·ã§ã³ ããŒãã«ããšãããšã
ããã«ã¯ãšãªé床ãå¹çãé«ããããå¯èœæ§ãããã- ã€ã³ããã¯ã¹ä»ããã¥ãŒãå®çŸ©ãããŠããå Žåã®ããŒãã£ã·ã§ã³åãæ¿ã
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/alter-table-transact-sql
- ã€ã³ããã¯ã¹ä»ããã¥ãŒãå®çŸ©ãããŠããå Žåã®ããŒãã£ã·ã§ã³åãæ¿ã
-
è£è¶³ïŒèªåå©çšã¯ãšãã£ã·ã§ã³äŸåïŒ: ãçŽæ¥æå®ããŠããªãã¯ãšãªããã
ãªããã£ãã€ã¶ã«äœ¿çšããããïŒèªåç §åïŒã®ã¯ã
Enterprise EditionïŒããã³ Developer / EvaluationïŒã«éãããã
Standard Edition ã§ã¯ãWITH (NOEXPAND)ãã³ããä»ããŠ
æç€ºçã«åç §ããå¿ èŠãããã
-
äžè¬çã«ã€ã³ããã¯ã¹ã¯ã
- éžæåºŠãé«ãé ç®ãæ€çŽ¢æ¡ä»¶ã«äœ¿çšããå Žåã«æçšã§ããã
- ãããšã¯éã«ãéžæåºŠã®äœãé ç®ã§ã¯äžå©ã«ãªãããšãå€ãã
-
éžæåºŠ
- éžæåºŠãé«ãïŒéè€ãå°ãªã
ïŒäž»ããŒããŠããŒã¯ ããŒãªã©ïŒ - éžæåºŠãäœãïŒéè€ãå€ãã
ïŒäŸãã°ã"ç·æ§"ã"女æ§" ãšããããŒã¿ã®ã¿æ ŒçŽããïŒ
- éžæåºŠãé«ãïŒéè€ãå°ãªã
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã¯ãéžæåºŠã®äœãé ç®ã«å¯ŸããŠã¯äžå©ã§ããã
-
äŸãã°ã"ç·æ§"ã"女æ§" ãšããããŒã¿ã®ã¿æ ŒçŽããé ç®ã«å¯ŸããŠã
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããäœæãã1000 åã® "ç·æ§" 瀟å¡ãæ€çŽ¢ããæã«
ãéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã䜿çšããŠãã€ã³ããã¯ã¹ ã¹ãã£ã³ãããå Žåãèããã -
ãã®å Žåããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã§ã¯ã
ããªãŒã ã¬ãã« ããŒãžãã®ãã€ã³ããã¯ã¹ ããŒãžããã
ãããŒã¿ ããŒãžãã«ã¢ã¯ã»ã¹ãããã
ãããŒã¿ ããŒãžãã«å¯ŸããŠãæå€§ã§ 1000 åãã® I/O ãçºçããå¯èœæ§ãããã
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã¯ãéžæåºŠã®äœãé ç®ã«å¯Ÿã㊠"ã" æå¹ã§ããã
-
äŸãã°ã"ç·æ§"ã"女æ§" ãšããããŒã¿ã®ã¿æ ŒçŽããé ç®ã«å¯ŸããŠã
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããäœæãã1000 åã® "ç·æ§" 瀟å¡ãæ€çŽ¢ããæã«
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã䜿çšããŠãã€ã³ããã¯ã¹ ã¹ãã£ã³ãããå Žåãèããã -
ãã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããäœæããããŒãã«ã§ã¯ã
ãã¯ã©ã¹ã¿åããŒãã®å€ïŒãã®å Žåã"ç·æ§"ã"女æ§"ïŒæ¯ã«ããŒã¿ããŸãšãŸã£ãŠããããã- "ç·æ§" ç€Ÿå¡æ å ±ãèªã¿èŸŒãããŒãžæ°ã¯æå°åãããI/O åæ°ãæå°åãããã
- ãŸãããéã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ããšç°ãªãã
ããªãŒã ã¬ãã« ããŒãžãã®ãããŒã¿ ããŒãžããçŽæ¥ã¹ãã£ã³ããããšãã§ããã
-
äŸãã°ããããŒã¿ ããŒãžãã« 10 ã¬ã³ãŒããæ ŒçŽã§ããå Žåã
- 1000 åã® "ç·æ§" 瀟å¡ã®ã¬ã³ãŒã㯠100 ããŒãžã«æ ŒçŽããã
- ããã 1 ã€ã®ãšã¯ã¹ãã³ãã«èŠåæ£ããæ ŒçŽãããŠããã°ã
- æå°ã§ 13 åã® I/O ã§èªã¿åããå®äºããã
1000ïŒã¬ã³ãŒãïŒ / 10ïŒã¬ã³ãŒã / ããŒãžïŒ / 8ïŒããŒãž / ãšã¯ã¹ãã³ãïŒ â 13 ãšã¯ã¹ãã³ã
â 13 åã® I/O
â» SQL Server ã¯ããã£ã¹ã¯ I/O ãããã£ã¹ã¯äžç®¡çåäœã§ããããšã¯ã¹ãã³ããåäœã§åŠçããã
ãªããéžæåºŠã®äœãããŒã¿ã§ã¯ãã©ã¡ãã®ã€ã³ããã¯ã¹ã§ãã
ããŒã¿ã®æ¿å
¥æã«ããããŒãžåå²ããçºçãããããªããäžå©ã§ããã
ãããŒãžåå²ãã«ã€ããŠã¯ãããã€ã³ããã¯ã¹ã®æçåãã®ç®¡çãã§èª¬æããã
éžæåºŠã®äœãé ç®ãããŒã«ãããã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãã®äœæã¯ã
- æ€çŽ¢ïŒãç¯å²æ€çŽ¢ãã»ãé æ¬¡ã¢ã¯ã»ã¹ãïŒã®å¹ç
- ããŒã¿æŽæ°æã®ãããŒãžåå²ãã®ãªãŒããŒããã
ã®ãã¬ãŒããªããèæ ®ãã圢ã«ãªãã
è£è¶³ïŒéžæåºŠã®äœãåã«å¯ŸããçŸåšã®éžæè¢ïŒ: ãæ§å¥ãã®ãããª
éžæåºŠã®äœãåã«åç¬ã§ã€ã³ããã¯ã¹ã匵ãããšã¯ãçŸåšã§ãæšå¥šãããªãã
ãã ãã以äžã¯æå¹ãªããšãããã
- è€åã€ã³ããã¯ã¹ã®å é 以å€ã«çœ®ã
ïŒ(éšçœ²ID, æ§å¥)ã®ããã«ãéžæåºŠã®é«ãåãšçµã¿åãããïŒ- ãã£ã«ã¿éžæãããã€ã³ããã¯ã¹
ïŒWHERE Status = 'Active'ã®ããã«ãå°æ°æŽŸã®å€ã ãã察象ã«ããïŒ- åã¹ã㢠ã€ã³ããã¯ã¹
ïŒéè€ãå€ãåã»ã©å§çž®çãé«ããéèšã¯ãšãªã§åšåãçºæ®ããïŒ
DB ã®ãããŒã¿ ãã¡ã€ã«ãã¯ã
- è«ççãªãã»ã°ã¡ã³ããã
- ç©ççãªããšã¯ã¹ãã³ãã
ããæ§æãããã
ãã»ã°ã¡ã³ãããšã¯ãããŒãã«ãã€ã³ããã¯ã¹ãšãã£ãããªããžã§ã¯ããæå³ããã
SQL Server ã¯ã
- ãã£ã¹ã¯ I/O ãããã£ã¹ã¯äžç®¡çåäœã§ãã 64KB ã®ããšã¯ã¹ãã³ããåäœã§åŠçããã
- ãŸããããšã¯ã¹ãã³ããã¯ãã¡ã¢ãªäžã®ç®¡çåäœã§ãã 8KB ã®ãããŒãžãããæ§æãããã

-
ããŒã¿ã®è¿œå ãæŽæ°åŠçãªã©ã§ã
- ãã€ã³ããã¯ã¹ ããŒãžãããããŒã¿ ããŒãžãå ã®ç©ºãé åãåãŸã£ãå Žåã
- ãããŒãžåå²ããçºçããäžéšã®ãããŒãžããã
å¥ã®ããšã¯ã¹ãã³ããã«æ ŒçŽãããããšãããã
-
äŸãã°ãSQL Server ã§ã¯
- ãã€ã³ããã¯ã¹ ããŒãžãããããŒã¿ ããŒãžããåãŸããšã
ãããŒãžåå²ãã«ããæ°ããè¡ãæ¿å ¥ããäœè£ãäœãåºãã - ãã®äœæ¥ã«ã¯ã³ã¹ããããããããDB ãµãŒãå
šäœã®ããã©ãŒãã³ã¹ãäœäžãããã
ãã€ã³ããã¯ã¹ã®æçåãã¯ããã€ã³ããã¯ã¹ ããŒãžãããããŒã¿ ããŒãžãã®
ãããŒãžåå²ããé²ãã ç¶æ ãæãã
- ãã€ã³ããã¯ã¹ ããŒãžãããããŒã¿ ããŒãžããåãŸããšã

- ãã€ã³ããã¯ã¹ã®æçåããé²ãã ç¶æ
ã§ã¯ãI/O åŠçã®é£ç¶æ§ã倱ããã
å¥ã®ããšã¯ã¹ãã³ããããæçåãããããŒãžããååŸãããšãã
äœå㪠I/O ãçºçããã

- äžè¬çã«ããã®ç¶æ
ã¯ã»ã°ã¡ã³ãïŒããŒãã«ãã€ã³ããã¯ã¹ïŒã
ãåæ§ç¯ãããããšã§è§£æ¶ã§ããã
è£è¶³ïŒæçåã®æž¬ãæ¹ãšå¯ŸåŠïŒ: æçåã®ç¶æ³ã¯ä»¥äžã§ç¢ºèªããã
SELECT OBJECT_NAME(ips.object_id) AS table_name, i.name AS index_name, ips.avg_fragmentation_in_percent, ips.avg_page_space_used_in_percent, ips.page_count FROM sys.dm_db_index_physical_stats( DB_ID(), NULL, NULL, NULL, 'SAMPLED') AS ips JOIN sys.indexes AS i ON i.object_id = ips.object_id AND i.index_id = ips.index_id WHERE ips.page_count > 1000 ORDER BY ips.avg_fragmentation_in_percent DESC;å®çªã®å€æåºæºã¯ä»¥äžã
æçåç å¯ŸåŠ ã5% äœãããªã 5ã30% ALTER INDEX ... REORGANIZEïŒãªã³ã©ã€ã³ããã°æ¶è²»ãå°ããïŒ30%ã ALTER INDEX ... REBUILDïŒçµ±èšãæŽæ°ãããïŒãã ããããŒãžæ°ãå°ãªãã€ã³ããã¯ã¹ïŒ1000 ããŒãžæªæºãç®å®ïŒã¯
æçåçãé«ãåºãŠãç¡èŠããŠããã
ãŸããSSD / NVMe ã§ã¯ã·ãŒã¯ ã³ã¹ããç¡ãããã
æçåã«ããæ§èœåœ±é¿ã¯ HDD æä»£ããæ Œæ®µã«å°ããã
çŸåšã¯ãæçåçããã **avg_page_space_used_in_percentïŒããŒãžå¯åºŠïŒ**ã®
äœäžã«ããããŒãžæ°ã®å¢å ã®ã»ããåé¡ã«ãªããããããªãã
REBUILDã®ãªã³ã©ã€ã³å®è¡ã¯
Enterprise Edition ã®æ©èœïŒSQL Server 2016 以éã¯
RESUMABLE = ONã«ããäžæã»åéãå¯èœïŒã
-
ãããŒãžåå²ãã¯ã
- DB ãµãŒãå šäœã®ããã©ãŒãã³ã¹ã®äœäžãã
- ãã€ã³ããã¯ã¹ã®æçåãã«ããäœå㪠I/O ã®çºçã«
ç¹ããããã®ããããªãã¹ããããŒãžåå²ããçºçããªãããã«ããå¿ èŠãããã
-
ãããŒãžåå²ãã®çºçãææ¢ããããã
- æŽæ°ãšæ¿å
¥ãé »ç¹ã«è¡ãããäºå®ã®ããŒãã«ããã€ã³ããã¯ã¹ã«ã¯
ãããŒãžå¯åºŠããäœãèšå®ããããŒã¿ã®å¢å ã«å¯Ÿå¿ãã空ãé åãæ®ããŠããã - ãããŒãžå¯åºŠãã¯ãããŒãã«ãã€ã³ããã¯ã¹ã®çææã«èšå®ããããšãã§ããã
- æŽæ°ãšæ¿å
¥ãé »ç¹ã«è¡ãããäºå®ã®ããŒãã«ããã€ã³ããã¯ã¹ã«ã¯
-
ãã ãããããŒãžå¯åºŠãã®å€ãäœããšã
ã¯ãšãªãåŠçããããã«èªã¿åãããŒãžïŒãšã¯ã¹ãã³ãïŒãå€ããªãå¯èœæ§ãããã®ã§ã
以äžã®ãã¬ãŒããªããèæ ®ãããããŒãžå¯åºŠããæ±ºå®ããå¿ èŠãããã- èªã¿åãåŠçïŒèªã¿åãããŒãžïŒãšã¯ã¹ãã³ãïŒæ°ã®å¢å
- æžã蟌ã¿åŠçïŒãããŒãžåå²ãã®çºç
-
äŸãã°ãããŒãã«ãèªã¿åãå°çšã§å€æŽãããªãå Žåã¯ã
ããŒãã«ããã€ã³ããã¯ã¹ã®ãããŒãžå¯åºŠããé«ãèšå®ããããšã§ã
èªã¿åãããŒãžïŒãšã¯ã¹ãã³ãïŒæ°ãæžããããšãã§ããã
ãããŒãžå¯åºŠãã¯ãFILLFACTOR ãªãã·ã§ã³ã§èšå®ããããšãã§ããã
-
FILLFACTORã¯ã-
CREATE INDEXã¹ããŒãã¡ã³ã -
DBCC DBREINDEXã¹ããŒãã¡ã³ã -
DBCC INDEXDEFRAGã¹ããŒãã¡ã³ã
ã®ãªãã·ã§ã³ã§æå®ã§ããã
-
-
ãã®ãªãã·ã§ã³ã¯ã
- ãã€ã³ããã¯ã¹ ããŒãžã
- ãããŒã¿ ããŒãžã
ã®ãããŒãžå¯åºŠããå¶åŸ¡ããã
-
éåžžãæ¢å®ã®
FILLFACTORã§é©åãªããã©ãŒãã³ã¹ãåŸããããã
å Žåã«ãã£ãŠã¯FILLFACTORã倿Žããããšã§ããã«ããã©ãŒãã³ã¹ãé«ãŸãã
è£è¶³ïŒææ°åïŒ:
DBCC DBREINDEXãšDBCC INDEXDEFRAGã¯
éæšå¥šã§ãããçŸåšã¯ALTER INDEX IX_Name ON dbo.Table1 REBUILD WITH (FILLFACTOR = 90, ONLINE = ON); ALTER INDEX IX_Name ON dbo.Table1 REORGANIZE;ã䜿çšããã
ãªããFILLFACTORãå¹ãã®ã¯ã€ã³ããã¯ã¹ã®äœæã»åæ§ç¯æã®ã¿ã§ã
éåžžã®æ¿å ¥ã»æŽæ°ã«ã¯åœ±é¿ããªãç¹ã«æ³šæ
ïŒç©ºãé åã¯åæ§ç¯æã«ç¢ºä¿ããããã®åŸã¯åãŸã£ãŠããïŒã
å調å¢å ããã¯ã©ã¹ã¿åããŒã«ã¯FILLFACTORãäžããŠãæå³ããªã
ïŒæ«å°Ÿã«è¿œèšãããã ãã§ããŒãžåå²ãèµ·ããªãããïŒã
-
PAD_INDEXã¯ãCREATE INDEXã®ã¹ããŒãã¡ã³ãã®ãªãã·ã§ã³ã§æå®ã§ããã -
ãã®ãªãã·ã§ã³ã¯ãã€ã³ããã¯ã¹ã®ããªãŒã ã¬ãã« ããŒãžãã§ã¯ãªãã
ã€ã³ããã¯ã¹ã®ãäžéã¬ãã« ããŒãžãã®ãããŒãžå¯åºŠããå¶åŸ¡ããã -
PAD_INDEXã¯FILLFACTORã§æå®ãããŠããããŒã»ã³ããŒãžã䜿çšããã®ã§ã
PAD_INDEXã¯FILLFACTORãæå®ãããŠããå Žåã«ã®ã¿æå¹ã«ãªãã
-
ã€ã³ããã¯ã¹ã®èšèšã®å šè¬çãªã¬ã€ãã©ã€ã³
https://learn.microsoft.com/ja-jp/sql/relational-databases/sql-server-index-design-guide -
SQLServer ã®ã€ã³ããã¯ã¹ã«ã€ããŠãã£ãããšãŸãšããŠã¿ã - Qiita
https://qiita.com/kz_morita/items/41291516ff3ee2650554 -
SQLServer
- ã€ã³ããã¯ã¹ã®åºç€ãšã¡ã³ããã³ã¹
http://mtgsqlserver.blogspot.jp/2013/03/blog-post_30.html
- ã€ã³ããã¯ã¹ã®åºç€ãšã¡ã³ããã³ã¹
- è€åã€ã³ããã¯ã¹ã®èœãšã穎 | ãã£ãšãªæ¥ã
| ã¬ããã³ã³ãã¥ãŒã¿ãŒ
https://www.gatc.jp/gat/it/it02dbindex.html - è€åã€ã³ããã¯ã¹ã®æ£ããåã®é åº
http://use-the-index-luke.com/ja/sql/where-clause/the-equals-operator/concatenated-keys
è£è¶³ïŒã€ã³ããã¯ã¹ã䜿ãããªãå žåãã¿ãŒã³ïŒ: èšèšãæ£ãããŠãã
ã¯ãšãªã®æžãæ¹æ¬¡ç¬¬ã§ã€ã³ããã¯ã¹ã¯äœ¿ãããªãïŒSARGable ã§ãªãïŒã
NG ãªæžãæ¹ å¯ŸåŠ WHERE YEAR(OrderDate) = 2026WHERE OrderDate >= '2026-01-01' AND OrderDate < '2027-01-01'WHERE col + 0 = @v/WHERE ISNULL(col,0) = @våã«æŒç®ã»é¢æ°ãæããªã WHERE col LIKE '%abc%'åæ¹äžèŽïŒ 'abc%'ïŒã«ãããäžéäžèŽã¯å šææ€çŽ¢ãæ€èšnvarcharåã«varcharã®å€ãæž¡ãæé»ã®å倿ã§ã¹ãã£ã³ã«ãªãããã©ã¡ãŒã¿ã®åãæãã æåŸã®ãæé»ã®å倿ãã¯ã
ADO.NET ã®ãã©ã¡ãŒã¿åãåãšé£ãéã£ãŠããå Žåã«èµ·ããããã
å®è¡ãã©ã³ã«CONVERT_IMPLICITã®èŠåãšããŠçŸãã
ïŒADO.NETããŒã¿ãããã€ãã®æ¥ç¶æååã
å®è¡ãã©ã³ã®ã°ã©ãã£ã«ã«è¡šç€ºåç §ïŒã
Tags: ç§»è¡, ããŒã¿ã¢ã¯ã»ã¹, SQL Server