
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрджрд░реНрдн рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛрдПрдХ рдЧрд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рд╕рдордп рдХреЗ рд╕рд╛рде, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреА рд╣реИрдВ - рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ, рдЦрд░рд╛рдмреА, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рдЗрд╖реНрдЯрддрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╕реЗрд╡рд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1. рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯ рдЗрдВрдбреЗрдХреНрд╕
2.
рдЕрджреНрдпрддрди рдЖрдБрдХрдбрд╝реЗ3.
рдмреИрдХрдЕрдкрдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЕрджреНрдпрддрди 2019-06-03:рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ 5 рд╕рд╛рд▓ рдмрд╛рдж рдХрд┐рдпрд╛ рдерд╛ред рдРрд╕рд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдЖ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдиреНрд╣реЛрдВрдиреЗ
SQL рд╕рд░реНрд╡рд░ рдХреА рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдЯреВрд▓реНрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рдХрдИ рд╡рд┐рдЪрд╛рд░ рдЬрдорд╛ рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкрд░ рдореИрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ
UI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд░реЗрдбрдЧреЗрдЯ рдФрд░
рдбреЗрд╡рд░реНрдЯ рдХреЗ рдкреЗрдб рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЛ рдореБрдЦреНрдп рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдореИрдиреЗрдЬрд░ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рдЦрдВрдбрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо
- рдПрдХ рд╕рдордп рдореЗрдВ рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдЪрдпрдирд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЪрдпрди
- рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдЦреЛрдЬ рдФрд░ рдкрд░рд┐рд╖реНрдХреГрдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
- рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА
- рд╕реВрдЪрдХрд╛рдВрдХ рд░рдЦрд░рдЦрд╛рд╡ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА
- рд╣реАрдк рдФрд░ рдХреЙрд▓рдорд╕реНрдЯреЛрд░рд╕реНрдЯреЛрд░ рд░рдЦрд░рдЦрд╛рд╡ рд╕рд╣рд╛рдпрддрд╛
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рд╕рдорд░реНрдерди
- рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рдВрдкреАрдбрд╝рди рдФрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдЕрджреНрдпрддрди рдХреЛ рдкреБрди: рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдиреБрдХреВрд▓рди
- SQL Server 2008+ рдФрд░ Azure SQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
рдЕрднреА рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ,
SQL Index Manager рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлрд╝реНрдд рд╣реИ ред
рдЗрд╕
рд▓рд┐рдВрдХ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╕реНрд░реЛрдд
GitHub рдкрд░ рд╣реИрдВред


рд▓реЗрдХрд┐рди рдЕрдм рд╡рд╛рдкрд╕ рдореВрд▓ рдкреЛрд╕реНрдЯ рдкрд░ред рддреЛ, рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ ...
рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рдЦрдВрдбрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рдЦрдВрдбрди рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ:
1. рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрдареЛрдВ рдХреЗ рднреАрддрд░ рд╡рд┐рдЦрдВрдбрдирд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓рдиреЗ, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЕрдЧрд░ рдПрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд▓реЗрдХрд┐рди ...
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЖрдХрд╛рд░ рд╣реИ рдЬреЛ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рдкреГрд╖реНрда рдкрд░ рд╣реИ, рддреЛ рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдореБрдХреНрдд рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рддреА рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдЦрдВрдбрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЙрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬреЛ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рд░реВрдк рд╕реЗ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред
2. рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╡рд┐рдЦрдВрдбрдирдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдЦрдВрдбрди рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдкреГрд╖реНрда рд╡рд┐рднрд╛рдЬрди рдСрдкрд░реЗрд╢рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрда рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреГрд╖реНрда рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдкреГрд╖реНрда рд╕реЗ рд▓рдЧрднрдЧ рдЖрдзреЗ рдЕрднрд┐рд▓реЗрдЦ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдЕрдХреНрд╕рд░ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рдирд┐рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЦрдВрдбрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдЦрдВрдбрди рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдЦрдВрдбрд┐рдд рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп, рдЕрдзрд┐рдХ IO рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдЦрдВрдбрди рд╕рд░реНрд╡рд░ рдХреА рдореЗрдореЛрд░реА рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреИрд╢ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд┐рдЦрдВрдбрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП,
SQL рд╕рд░реНрд╡рд░ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
ALTER INDEX REBUILD / REORGANIZE ред
рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдСрдкрд░реЗрд╢рди рд╡рд┐рдЦрдВрдбрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдкреГрд╖реНрда рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░рдХреЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдкреГрд╖реНрда рдкрд░ рдореБрдХреНрдд рд╕реНрдерд╛рди рдХреЛ
рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ
рдлрд╝рд┐рд▓рдлрд╝реЗрдХреНрдЯрд░ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рд╡рд┐рдЦрдВрдбрди рдирдЧрдгреНрдп рд╣реИ, рдореМрдЬреВрджрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ
рдкрддреНрддреА-рд╕реНрддрд░реАрдп рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрдирд░реНрдЧрдарди рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╡рд┐рдЦрдВрдбрди рдХреА рдбрд┐рдЧреНрд░реА
sysinos_db_index_physical_stats рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕рд┐рд╕реНрдЯрдо рджреГрд╢реНрдп рдореЗрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
SELECT * FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) WHERE avg_fragmentation_in_percent > 0
рдЗрд╕ рдХреНрд╡реЗрд░реА рдореЗрдВ, рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдореЛрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдЦрдВрдбрди (
рд╕реАрдорд┐рдд / рдкреВрд░реНрдг рдореЛрдб) рдХреЗ рд╕реНрддрд░ рдХреЛ рдХрд╛рдлреА рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП,
SAMPLED / DETAILED рдореЛрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЦрдВрдбрд┐рдд рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рд╣реИред рдЕрдм рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдорд╛рди
INDEX рдХрдорд╛рдВрдб рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
DECLARE @SQL NVARCHAR(MAX) DECLARE cur CURSOR LOCAL READ_ONLY FORWARD_ONLY FOR SELECT ' ALTER INDEX [' + i.name + N'] ON [' + SCHEMA_NAME(o.[schema_id]) + '].[' + o.name + '] ' + CASE WHEN s.avg_fragmentation_in_percent > 30 THEN 'REBUILD WITH (SORT_IN_TEMPDB = ON)' ELSE 'REORGANIZE' END + ';' FROM ( SELECT s.[object_id] , s.index_id , avg_fragmentation_in_percent = MAX(s.avg_fragmentation_in_percent) FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) s WHERE s.page_count > 128 -- > 1 MB AND s.index_id > 0 -- <> HEAP AND s.avg_fragmentation_in_percent > 5 GROUP BY s.[object_id], s.index_id ) s JOIN sys.indexes i WITH(NOLOCK) ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id JOIN sys.objects o WITH(NOLOCK) ON o.[object_id] = s.[object_id] OPEN cur FETCH NEXT FROM cur INTO @SQL WHILE @@FETCH_STATUS = 0 BEGIN EXEC sys.sp_executesql @SQL FETCH NEXT FROM cur INTO @SQL END CLOSE cur DEALLOCATE cur
рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
SORT_IN_TEMPDB рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА
рдЬрд╛рддреА рд╣реИред рд╣рдореЗрдВ
ONLINE рд╡рд┐рдХрд▓реНрдк рдХрд╛ рднреА рдЕрд▓рдЧ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рд░реА-рдХреНрд░рд┐рдПрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЧреБрдЪреНрдЫреЗрджрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред рд╣рдордиреЗ рдПрдХ рдХрд╡рд░рд┐рдВрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдпрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ
рдЖрд░рдИрдмреАрдпреВрдПрд▓ рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ - рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
SORT_IN_TEMPDB рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд░реНрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдбрд╝реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╡рд┐рдХрд▓реНрдк рдХреА рдЕрдирджреЗрдЦреА рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░
tempdb рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рдбрд┐рд╕реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рддреЛ рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрдЧрд╛ред
ONLINE рдЖрдкрдХреЛ рдЙрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдмрдирд╛рдП рдмрд┐рдирд╛ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд╡рд┐рдЦрдВрдбрди рдХреА рдХрдо рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рдпрд╛ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдВрдЯрд┐рдВрдЧ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛрдИ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рд▓рд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрд░реЛрдХреНрдд рдХреНрд╡реЗрд░реА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
DECLARE @IsDetailedScan BIT = 0 , @IsOnline BIT = 0 DECLARE @SQL NVARCHAR(MAX) SELECT @SQL = ( SELECT ' ALTER INDEX [' + i.name + N'] ON [' + SCHEMA_NAME(o.[schema_id]) + '].[' + o.name + '] ' + CASE WHEN s.avg_fragmentation_in_percent > 30 THEN 'REBUILD WITH (SORT_IN_TEMPDB = ON' -- Enterprise, Developer + CASE WHEN SERVERPROPERTY('EditionID') IN (1804890536, -2117995310) AND @IsOnline = 1 THEN ', ONLINE = ON' ELSE '' END + ')' ELSE 'REORGANIZE' END + '; ' FROM ( SELECT s.[object_id] , s.index_id , avg_fragmentation_in_percent = MAX(s.avg_fragmentation_in_percent) FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, CASE WHEN @IsDetailedScan = 1 THEN 'DETAILED' ELSE 'LIMITED' END) s WHERE s.page_count > 128 -- > 1 MB AND s.index_id > 0 -- <> HEAP AND s.avg_fragmentation_in_percent > 5 GROUP BY s.[object_id], s.index_id ) s JOIN sys.indexes i ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id JOIN sys.objects o ON o.[object_id] = s.[object_id] FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') PRINT @SQL EXEC sys.sp_executesql @SQL
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░, рджреЛрдиреЛрдВ рдкреНрд░рд╢реНрди, рд╡рд┐рдХрдЯ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ:
ALTER INDEX [IX_TransactionHistory_ProductID] ON [Production].[TransactionHistory] REORGANIZE; ALTER INDEX [IX_TransactionHistory_ReferenceOrderID_ReferenceOrderLineID] ON [Production].[TransactionHistory] REBUILD WITH (SORT_IN_TEMPDB = ON, ONLINE = ON); ALTER INDEX [IX_TransactionHistoryArchive_ProductID] ON [Production].[TransactionHistoryArchive] REORGANIZE;
рджрд░рдЕрд╕рд▓, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо
рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦреЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
SQL рд╕рд░реНрд╡рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЬрдирд╛рдПрдБ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯреЗрд╢рдирдЕрджреНрдпрддрди 2016-04-22: рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдХреБрдЫ рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛
USE ... DECLARE @PageCount INT = 128 , @RebuildPercent INT = 30 , @ReorganizePercent INT = 10 , @IsOnlineRebuild BIT = 0 , @IsVersion2012Plus BIT = CASE WHEN CAST(SERVERPROPERTY('productversion') AS CHAR(2)) NOT IN ('8.', '9.', '10') THEN 1 ELSE 0 END , @IsEntEdition BIT = CASE WHEN SERVERPROPERTY('EditionID') IN (1804890536, -2117995310) THEN 1 ELSE 0 END , @SQL NVARCHAR(MAX) SELECT @SQL = ( SELECT ' ALTER INDEX ' + QUOTENAME(i.name) + ' ON ' + QUOTENAME(s2.name) + '.' + QUOTENAME(o.name) + ' ' + CASE WHEN s.avg_fragmentation_in_percent >= @RebuildPercent THEN 'REBUILD' ELSE 'REORGANIZE' END + ' PARTITION = ' + CASE WHEN ds.[type] != 'PS' THEN 'ALL' ELSE CAST(s.partition_number AS NVARCHAR(10)) END + ' WITH (' + CASE WHEN s.avg_fragmentation_in_percent >= @RebuildPercent THEN 'SORT_IN_TEMPDB = ON' + CASE WHEN @IsEntEdition = 1 AND @IsOnlineRebuild = 1 AND ISNULL(lob.is_lob_legacy, 0) = 0 AND ( ISNULL(lob.is_lob, 0) = 0 OR (lob.is_lob = 1 AND @IsVersion2012Plus = 1) ) THEN ', ONLINE = ON' ELSE '' END ELSE 'LOB_COMPACTION = ON' END + ')' FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) s JOIN sys.indexes i ON i.[object_id] = s.[object_id] AND i.index_id = s.index_id LEFT JOIN ( SELECT c.[object_id] , index_id = ISNULL(i.index_id, 1) , is_lob_legacy = MAX(CASE WHEN c.system_type_id IN (34, 35, 99) THEN 1 END) , is_lob = MAX(CASE WHEN c.max_length = -1 THEN 1 END) FROM sys.columns c LEFT JOIN sys.index_columns i ON c.[object_id] = i.[object_id] AND c.column_id = i.column_id AND i.index_id > 0 WHERE c.system_type_id IN (34, 35, 99) OR c.max_length = -1 GROUP BY c.[object_id], i.index_id ) lob ON lob.[object_id] = i.[object_id] AND lob.index_id = i.index_id JOIN sys.objects o ON o.[object_id] = i.[object_id] JOIN sys.schemas s2 ON o.[schema_id] = s2.[schema_id] JOIN sys.data_spaces ds ON i.data_space_id = ds.data_space_id WHERE i.[type] IN (1, 2) AND i.is_disabled = 0 AND i.is_hypothetical = 0 AND s.index_level = 0 AND s.page_count > @PageCount AND s.alloc_unit_type_desc = 'IN_ROW_DATA' AND o.[type] IN ('U', 'V') AND s.avg_fragmentation_in_percent > @ReorganizePercent FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') PRINT @SQL --EXEC sys.sp_executesql @SQL