рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рдд рдШрд╛рддрдХ рдкрд╛рдк

рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ: рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдРрд╕реЗ рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╡реЗ рд╕рдВрдЪрдпреА рд╣реИрдВ - рдЗрди рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдХреЛрдб рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред


рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рд▓реЛрдЧ рдЕрдкрдиреЗ рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛрдб рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ - рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЧрд▓рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЪрд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ! рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ SQL рд╕рд░реНрд╡рд░ рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬрдм рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рд╕реНрддрдВрдн рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрдкреВрд░реНрдг рд╕реНрддрдВрдн рдХреЗ рд▓рд┐рдП рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк WHERE рдХреНрд▓реЙрдЬ рдпрд╛ рдХрд┐рд╕реА рд╕рдореНрдорд┐рд▓рд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрддрдВрдн рдХреЗ рд▓рд┐рдП рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдЯреЗрдмрд▓ рд╕реНрдХреИрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕ рд╕реНрддрдВрдн рдкрд░ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдЖрдк рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЙрд▓рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП CAST рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреЙрд▓рдо рдореЗрдВ рдЙрд╕ рджрд┐рдирд╛рдВрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдиреЗ рд╢рд░реНрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛? рдЖрдЗрдП рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЛ рджреЗрдЦреЗрдВ:

SELECT e.BusinessEntityID, e.NationalIDNumber FROM HumanResources.Employee AS e WHERE e.NationalIDNumber = 112457891; 

рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрд╣ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдмрдирд╛рдП рдЧрдП рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рд╣реИ:



рдпрд╣ рдХреНрд╡реЗрд░реА рдкрд░реНрдпрд╛рдкреНрдд рддреЗрдЬрд╝ рд╣реИ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдЫреЛрдЯреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЪрд╛рд░ рд░реАрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЪрдпрди рдХрдерди рдкрд░ рдЫреЛрдЯреЗ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдЪрд┐рд╣реНрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:



рдпрд╣ рд╕рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА (SQL Server 2012 рдореЗрдВ рдирдпрд╛) рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдз рдЧрд▓рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

 SELECT e.BusinessEntityID, e.NationalIDNumber FROM HumanResources.Employee AS e WHERE e.NationalIDNumber = '112457891'; 

рдФрд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдорд┐рд▓рддреА рд╣реИ:



рдФрд░ рдпрд╣рд╛рдВ, рдЪрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рджреЛ рд░реАрдб рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╣рд╛рдВ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдЗрддрдиреА рдЬрд▓реНрджреА рдФрд░ рдереЛрдбрд╝рд╛ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдПрдХ рдЯреЗрдмрд▓ рдореЗрдВ рд▓рд╛рдЦреЛрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рд╣рд╛рдБ, рддрдм рдореИрдВ рд╣реАрд░реЛ рдмрди рдЬрд╛рддрд╛ред

рд╕рд╣реА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рд╢рд░реНрддреЛрдВ рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рдФрд░ рдЬрд╣рд╛рдВ рдХреНрд▓реЙрд╕ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ


рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдмрд╛рдд рдХрд░реЗрдВ, рддреЛ рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдпрд╛ WHERE рдХреЗ рднрд╛рд╡, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдХреЙрд▓рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рддрд░реНрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рдо рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдХрд┐рддрдиреЗ рдзреАрдореЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 SELECT a.AddressLine1, a.AddressLine2, a.City, a.StateProvinceID FROM Person.Address AS a WHERE '4444' = LEFT(a.AddressLine1, 4) ; 

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, LEFT, рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрддрдВрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ:



рдирддреАрдЬрддрди, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП 316 рд░реАрдб рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ 9 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рддреЗрдЬ рдбрд┐рд╕реНрдХ рд╣реИрдВ)ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ '4444' рдХреЛ рдЗрд╕ рдлрдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯреА рд╣рд░ рд▓рд╛рдЗрди рд╕реЗ рддреБрд▓рдирд╛ рдХрд░рдиреА рд╣реЛрдЧреАред SQL рд╕рд░реНрд╡рд░ рднреА рдХреЗрд╡рд▓ рдПрдХ рдЯреЗрдмрд▓ рдХреЛ рд╕реНрдХреИрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП LEFT рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 SELECT a.AddressLine1, a.AddressLine2, a.City, a.StateProvinceID FROM Person.Address AS a WHERE a.AddressLine1 LIKE '4444%' ; 

рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рджреЗрдЦрддреЗ рд╣реИрдВ:



рдПрдХ рдХреНрд╡реЗрд░реА рдореЗрдВ 3 рд░реАрдб рдФрд░ 0 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд╕реНрддреБрдирд┐рд╖реНрдарддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЗрд╕реЗ 1 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реЛрдиреЗ рджреЗрдВред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдФрд░ рд╕рднреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕рд░рд┐рдЕрдВрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ - рдПрдХ рдЕрдЪреВрдХ рд╢рдмреНрдж, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ: SARG - рдЦреЛрдЬ рддрд░реНрдХ-рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди SARGeable рд╣реИ - рддреЛ рдЖрдк рдПрдХ рдХреЙрд▓рдо рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд░реНрдХ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рд╕реАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрд╕реЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрджрд┐ SARGeable - alas, Index Scan рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЕрдиреБрд╡рд╛рджрдХ ред)ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, WHERE рдХреЗ рднрд╛рд╡ рдпрд╛ рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдпрд╛ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдорд▓реНрдЯреА рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдпреВрдбреАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдПрдордПрд╕рдбреАрдПрди рдХреЗ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╣реБ-рдХрдерди рдпреВрдбреАрдПрдл рдореЛрдЯреЗ рддреМрд░ рдкрд░ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрдИ рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдФрд░ рдЖрдЧреЗ рдкреВрд░реЗ рдкрд╛рда рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА - рд▓рдЧрднрдЧ ред рдЕрдиреБрд╡рд╛рдж

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╡реЗ рдЖрдкрдХреЛ рдлрдВрд╕рд╛рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдЕрджреНрднреБрдд рддрдВрддреНрд░ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реЗ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдЗрди рдкреБрд░рд╛рдиреА рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рддрд░рд╣ред рдпрд╣ рдЕрджреНрднреБрдд рд╣реИред рдЬрдм рддрдХ рдЖрдк рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗред

рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЯреЗрдмрд▓ рдЪрд░ рдкрд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЯреЗрдмрд▓ рдЪрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЪреАрдЬ рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдВрддрд░ рд╣реИ - рдЖрдВрдХрдбрд╝реЗ рдЙрди рдкрд░ рдирд╣реАрдВ рдмрдиреЗ рд╣реИрдВред рдпрд╣ рдЕрдВрддрд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж ... рдЖрдкрдХреЛ рдорд╛рд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрдБрдХрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдмрд▓ рдЪрд░ рдпрд╛ UDF рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рдХреНрд╡реЗрд░реА рд╕рд┐рд░реНрдл рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдПрдХ (1) рдкрдВрдХреНрддрд┐ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдПрдХ рджрд┐рди рд╡реЗ рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рд▓реМрдЯрд╛рдПрдВрдЧреЗ рдФрд░ рдЖрдк рдПрдХ рдпреВрдбреАрдПрдл рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░реЗрдВрдЧреЗ ... рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд, рдмрд╣реБрдд рддреЗрдЬ рдФрд░ рдмрд╣реБрдд рдордЬрдмреВрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ UDF рд╣реИрдВ:

 CREATE FUNCTION dbo.SalesInfo () RETURNS @return_variable TABLE ( SalesOrderID INT, OrderDate DATETIME, SalesPersonID INT, PurchaseOrderNumber dbo.OrderNumber, AccountNumber dbo.AccountNumber, ShippingCity NVARCHAR(30) ) AS BEGIN; INSERT INTO @return_variable (SalesOrderID, OrderDate, SalesPersonID, PurchaseOrderNumber, AccountNumber, ShippingCity ) SELECT soh.SalesOrderID, soh.OrderDate, soh.SalesPersonID, soh.PurchaseOrderNumber, soh.AccountNumber, a.City FROM Sales.SalesOrderHeader AS soh JOIN Person.Address AS a ON soh.ShipToAddressID = a.AddressID ; RETURN ; END ; GO CREATE FUNCTION dbo.SalesDetails () RETURNS @return_variable TABLE ( SalesOrderID INT, SalesOrderDetailID INT, OrderQty SMALLINT, UnitPrice MONEY ) AS BEGIN; INSERT INTO @return_variable (SalesOrderID, SalesOrderDetailId, OrderQty, UnitPrice ) SELECT sod.SalesOrderID, sod.SalesOrderDetailID, sod.OrderQty, sod.UnitPrice FROM Sales.SalesOrderDetail AS sod ; RETURN ; END ; GO CREATE FUNCTION dbo.CombinedSalesInfo () RETURNS @return_variable TABLE ( SalesPersonID INT, ShippingCity NVARCHAR(30), OrderDate DATETIME, PurchaseOrderNumber dbo.OrderNumber, AccountNumber dbo.AccountNumber, OrderQty SMALLINT, UnitPrice MONEY ) AS BEGIN; INSERT INTO @return_variable (SalesPersonId, ShippingCity, OrderDate, PurchaseOrderNumber, AccountNumber, OrderQty, UnitPrice ) SELECT si.SalesPersonID, si.ShippingCity, si.OrderDate, si.PurchaseOrderNumber, si.AccountNumber, sd.OrderQty, sd.UnitPrice FROM dbo.SalesInfo() AS si JOIN dbo.SalesDetails() AS sd ON si.SalesOrderID = sd.SalesOrderID ; RETURN ; END ; GO 

рдорд╣рд╛рди рд╕рдВрд░рдЪрдирд╛ред рдпрд╣ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдкреНрд░рд╢реНрди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЦреИрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ:

 SELECT csi.OrderDate, csi.PurchaseOrderNumber, csi.AccountNumber, csi.OrderQty, csi.UnitPrice FROM dbo.CombinedSalesInfo() AS csi WHERE csi.SalesPersonID = 277 AND csi.ShippingCity = 'Odessa' ; 

рдПрдХ, рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЕрдиреБрд░реЛрдзред рдпрд╣рд╛рдБ рдЙрдирдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:



рдпрд╣ рдХреЗрд╡рд▓ 2.17 рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ, 148 рд▓рд╛рдЗрдиреЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ 1456 рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╢реВрдиреНрдп рд▓рд╛рдЧрдд рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЯреЗрдмрд▓, рдЯреЗрдмрд▓ рдЪрд░ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреА рд▓рд╛рдЧрдд рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИред рд╣рдореНрдо, рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ? рдЖрдЗрдП рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╢реВрдиреНрдп-рд▓рд╛рдЧрдд рд╡рд╛рд▓реЗ рдпреВрдбреАрдПрдл рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рд╡рд░рдг рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд╣реИред рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреИрд╢ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдорд┐рд▓реЗрдЧреА:

 SELECT deqp.query_plan, dest.text, SUBSTRING(dest.text, (deqs.statement_start_offset / 2) + 1, (deqs.statement_end_offset - deqs.statement_start_offset) / 2 + 1) AS actualstatement FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_query_plan(deqs.plan_handle) AS deqp CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest WHERE deqp.objectid = OBJECT_ID('dbo.CombinedSalesInfo'); 

рдФрд░ рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:



рд╡рд╛рд╣, рдпрд╣ рдЗрди рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреБрдЫ рдФрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕реНрдХреИрди рдпрд╣рд╛рдВ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВ, рдЬреЛ рд▓рдЧрднрдЧ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВред рд╕рд╛рде рд╣реА, рд╣реИрд╢ рдореИрдЪ рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдЯреЗрдореНрдкрдкреЗрдб рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдХрд╛рдлреА рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рдЖрдЗрдП, UDF рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рджреЗрдЦреЗрдВ:



рдпрд╣рд╛рдБ! рдФрд░ рдЕрдм рд╣рдо рдХреНрд▓рд╕реНрдЯрд░реНрдб рдЗрдВрдбреЗрдХреНрд╕ рд╕реНрдХреИрди рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдм рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдкреВрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпреВрдбреАрдПрдл рдХрдо рдФрд░ рдХрдо рдЖрдХрд░реНрд╖рдХ рд▓рдЧрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо, рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд╕реАрдзреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕реАрдзреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 SELECT soh.OrderDate, soh.PurchaseOrderNumber, soh.AccountNumber, sod.OrderQty, sod.UnitPrice FROM Sales.SalesOrderHeader AS soh JOIN Sales.SalesOrderDetail AS sod ON soh.SalesOrderID = sod.SalesOrderID JOIN Person.Address AS ba ON soh.BillToAddressID = ba.AddressID JOIN Person.Address AS sa ON soh.ShipToAddressID = sa.AddressID WHERE soh.SalesPersonID = 277 AND sa.City = 'Odessa' ; 

рдЕрдм, рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдареАрдХ рдЙрд╕реА рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ 310 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ, 2170 рдореЗрдВ рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, SQL рд╕рд░реНрд╡рд░ рд╕рд┐рд░реНрдл 911 рд░реАрдбреНрд╕ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛, 1456 рдХрд╛ рдирд╣реАрдВред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпреВрдбреАрдПрдл

"рддреЗрдЬреА рд╕реЗ рднрд╛рдЧреЛ!" рд╕рдХреНрд╖рдо рдХрд░рдирд╛: рдбрд░реНрдЯреА рд░реАрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрддреАрдд рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реБрдП, рдмреЛрд░реНрдб рдкрд░ 286 рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ рдкреБрд░рд╛рдиреЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░, рд╣рдо рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдкреИрдирд▓ рдкрд░ рдЯрд░реНрдмреЛ рдмрдЯрди рдерд╛ред рдпрджрд┐ рдЖрдк рдЧрд▓рддреА рд╕реЗ рдЗрд╕реЗ "рдирд┐рдЪреЛрдбрд╝" рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкреНрдпреВрдЯрд░ рддреБрд░рдВрдд рдкрд╛рдЧрд▓рдкрди рдХреЛ рдзреАрдорд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЕрдзрд┐рдХрддрдо рдмреИрдВрдбрд╡рд┐рдбреНрде рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реА рддрд░рд╣, рдХрдИ рд▓реЛрдЧ SQL рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд░реНрдмреЛ рдмрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ READ_UNCOMMITTED рдФрд░ NO_LOCK рд╕рдВрдХреЗрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ - рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдФрд░ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рддреЗрдЬ рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрдврд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рддрд╛рд▓реЗ рдирд╣реАрдВ рд▓рдЧрд╛рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдПрдЧреАред рдХрдо рддрд╛рд▓реЗ - рддреЗрдЬ рдкрд░рд┐рдгрд╛рдоред рд▓реЗрдХрд┐рди ...

рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ READ_UNCOMMITTED рдпрд╛ NO_LOCK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЧрдВрджреЗ рдкрдврд╝рддреЗ рд╣реИрдВред рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк "рдХреБрддреНрддрд╛" рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ "рдмрд┐рд▓реНрд▓реА" рдирд╣реАрдВ рдЕрдЧрд░ рдЙрд╕ рдкрд▓ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдСрдкрд░реЗрд╢рди рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд╛рде рд╣реА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдкреГрд╖реНрда рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд╛рд▓реЗ рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЬрд┐рди рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд╢реНрди рдкреВрд░рд╛ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗред рд╕рдорд╛рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдХреНрд╡реЗрд░реА, рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд, рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк NO_LOCK рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕рдВрдХреЗрдд рдХрд╛ рдЕрдиреБрдЪрд┐рдд рдЙрдкрдпреЛрдЧ


рд▓реЛрдЧ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЬрд▓реНрджрдмрд╛рдЬреА рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рд╕рдВрдХреЗрдд рдПрдХ, рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬрдм рд▓реЛрдЧ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдкрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддреЗ рд╣реИрдВ ... рд╡реЗ рддреБрд░рдВрдд рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреЙрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЯреЗрдмрд▓ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП LOOP JOIN рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рд╡реЗ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рдЫреЛрдЯреЗ рдФрд░ рддреНрд╡рд░рд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗ LOOP JOIN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рд╕рд░реНрд╡рд░ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:

 SELECT s.[Name] AS StoreName, p.LastName + ', ' + p.FirstName FROM Sales.Store AS s JOIN sales.SalesPerson AS sp ON s.SalesPersonID = sp.BusinessEntityID JOIN HumanResources.Employee AS e ON sp.BusinessEntityID = e.BusinessEntityID JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID OPTION (LOOP JOIN); 

рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ 101 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 4115 рд░реАрдб рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕ рд╕рдВрдХреЗрдд рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣реА рдЕрдиреБрд░реЛрдз 90 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ 2370 рд░реАрдбрд┐рдВрдЧ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдПрдХ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдЙрддрдиреА рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧреАред

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдПрдХ рдЯреЗрдмрд▓ рдкрд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рд╣реИ:

 SELECT * FROM Purchasing.PurchaseOrderHeader AS poh WHERE poh.PurchaseOrderID * 2 = 3400; 

рд╕рдорд╕реНрдпрд╛ рдлрд┐рд░ рд╕реЗ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдХреЙрд▓рдо рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рднреА рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рджрд░реНрд╢рди рдбреНрд░реЙрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рд╕реНрдХреИрди рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬрдм рд▓реЛрдЧ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

 SELECT * FROM Purchasing.PurchaseOrderHeader AS poh WITH (INDEX (PK_PurchaseOrderHeader_PurchaseOrderID)) WHERE poh.PurchaseOrderID * 2 = 3400; 

рдФрд░ рдЕрдм рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдПрдХ рд╕реНрдХреИрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдХреНрд▓рд╕реНрдЯрд░ рдХрд┐рдП рд╣реБрдП рдПрдХ рдХреЗ, рдЗрд╕рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ "рдЙрдкрдпреЛрдЧ" рд╣реИ, рд╣реИ рдирд╛? рд▓реЗрдХрд┐рди рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдмрджрд▓ рд░рд╣рд╛ рд╣реИ - рдЕрдм 11 рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рдмрдЬрд╛рдп, 44 рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ (рджреЛрдиреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ 0 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬ рдбрд┐рд╕реНрдХ рд╣реИрдВ)ред "рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ," рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ:

 SELECT * FROM Purchasing.PurchaseOrderHeader poh WHERE PurchaseOrderID = 3400 / 2; 

рдЕрдм рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдШрдЯрдХрд░ рджреЛ рд╣реЛ рдЧрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рд╕рд░реНрдЪ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рд╕рд╣реА рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕рдВрдХреЗрдд рд╣рдореЗрд╢рд╛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкрдВрдХреНрддрд┐-рджрд░-рдкрдВрдХреНрддрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ('рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд░рдирд╛' рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг)


рдкрдВрдХреНрддрд┐-рд╡рд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реЗрдЯ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрдЬрд╛рдп WHILE-рдЪрдХреНрд░ рдореЗрдВ рдХрд░реНрд╕рд░ рдпрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдХрдо рд╣реЛрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЗрди-рдмрд╛рдп-рд▓рд╛рдЗрди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИ рдЬреЛ рдУрд░реЗрдХрд▓ рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдЬреЛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХрд░реНрд╕рд░ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред рдХрд╛рд░рдг рдЬреЛ рднреА рд╣реЛ, рдХрд░реНрд╕рд░ рдХрд▓реА рдореЗрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдПрдХ рдЕрд╕рдлрд▓ рдХрд░реНрд╕рд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╣рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рдирджрдВрдб рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд░рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ - рдпрд╣ рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдерд╛ред

 BEGIN TRANSACTION DECLARE @Name NVARCHAR(50) , @Color NVARCHAR(15) , @Weight DECIMAL(8, 2) DECLARE BigUpdate CURSOR FOR SELECT p.[Name] ,p.Color ,p.[Weight] FROM Production.Product AS p ; OPEN BigUpdate ; FETCH NEXT FROM BigUpdate INTO @Name, @Color, @Weight ; WHILE @@FETCH_STATUS = 0 BEGIN IF @Weight < 3 BEGIN UPDATE Production.Product SET Color = 'Blue' WHERE CURRENT OF BigUpdate END FETCH NEXT FROM BigUpdate INTO @Name, @Color, @Weight ; END CLOSE BigUpdate ; DEALLOCATE BigUpdate ; SELECT * FROM Production.Product AS p WHERE Color = 'Blue' ; ROLLBACK TRANSACTION 

рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рд╣рдо рджреЛ рд░реАрдб рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реИрдХрдбрд╝реЛрдВ рд╣реИред рдореЗрд░реА рдорд╢реАрди рдкрд░, рдХреЛрдИ рднрд╛рд░ рдирд╣реАрдВ, рд░рдирдЯрд╛рдЗрдо рдПрдХ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

 BEGIN TRANSACTION UPDATE Production.Product SET Color = 'BLUE' WHERE [Weight] < 3 ; ROLLBACK TRANSACTION 

рдЕрдм рдХреЗрд╡рд▓ 15 рд░реАрдб рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдХреЗрд╡рд▓ 1 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реИред рд╣рдВрд╕реЛ рдорддред рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдРрд╕реЗ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░ред рдХрд░реНрд╕рд░ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЖрдк рдЙрдирдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдЦрд░рдЦрд╛рд╡ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ "рд░рди" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдиреЗрд╕реНрдЯреЗрдб рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрдЪрд┐рдд рдЙрдкрдпреЛрдЧ


рдЙрд╕ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ ... рдПрдХ рджреГрд╢реНрдп рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░рд╢реНрди рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЯреЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЛрдЧ рдЙрдиреНрд╣реЗрдВ рдЯреЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реНрдпрд░реНрде рдореЗрдВред рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рджреГрд╢реНрдп рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреАрд╕рд░реЗ рджреГрд╢реНрдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣? рдЖрдк рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрд╢рд╛рд╡рд╛рджреА рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рд╡рд╣ рдЙрди рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдпреЛрдЬрдирд╛ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд╛ рд╕рдордп рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рд╡рд╣ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрддрдиреА рд╣реА рдХрдо рд╡рд╣ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд▓рдЧрднрдЧ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛрдВрдЧреАред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ:

 CREATE VIEW dbo.SalesInfoView AS SELECT soh.SalesOrderID, soh.OrderDate, soh.SalesPersonID, soh.PurchaseOrderNumber, soh.AccountNumber, a.City AS ShippingCity FROM Sales.SalesOrderHeader AS soh JOIN Person.Address AS a ON soh.ShipToAddressID = a.AddressID ; CREATE VIEW dbo.SalesDetailsView AS SELECT sod.SalesOrderID, sod.SalesOrderDetailID, sod.OrderQty, sod.UnitPrice FROM Sales.SalesOrderDetail AS sod ; CREATE VIEW dbo.CombinedSalesInfoView AS SELECT si.SalesPersonID, si.ShippingCity, si.OrderDate, si.PurchaseOrderNumber, si.AccountNumber, sd.OrderQty, sd.UnitPrice FROM dbo.SalesInfoView AS si JOIN dbo.SalesDetailsView AS sd ON si.SalesOrderID = sd.SalesOrderID ; 

рдФрд░ рдпрд╣рд╛рдВ рдкрд╛рда рдХрд╛ рд▓реЗрдЦрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рдЗрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрддрд╛ рд╣реИ (рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ):
 SELECT csi.OrderDate FROM dbo. CominedSalesInfoView csi WHERE csi.SalesPersonID = 277 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдХреЛ 155 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 965 рд░реАрдб рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрд╕рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рд╣реИ:



рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдореЗрдВ 7000 рд▓рд╛рдЗрдиреЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

 SELECT soh.OrderDate FROM Sales.SalesOrderHeader AS soh WHERE soh.SalesPersonID = 277 ; 

рдФрд░ рдЕрдм рдЕрдиреБрд░реЛрдз 3 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ 685 рд░реАрдб рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдЙрд╕рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рд╣реИ:



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреНрд╡реЗрд░реА рд╕рд░рд▓реАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ, рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрд╢рди рд╣реИрдВ - рдЗрдВрдбреЗрдХреНрд╕ рд╕реНрдХреИрди рдФрд░ рд╣реИрд╢ рдореИрдЪ, рдЬреЛ рдПрдХ рд╕рд╛рде рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдмрд┐рдирд╛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SQL рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рд╕реЗ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд╢реНрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рдмрдбрд╝реА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдереЛрдбрд╝рд╛ рд╡рд┐рд╡рд╛рдж рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдВрдЯ (рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ) рдорд╛рдирдХ рдПрдбрд╡реЗрдВрдЪрд░рд╡рд░реНрдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝реА рд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде, рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИред тАЬрдЕрдВрддрд┐рдо рдЦрдВрдб рдореЗрдВ рдХреНрд╡реЗрд░реА рдЬреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реИред рд▓рдЧрднрдЧред рджреБрднрд╛рд╖рд┐рдпрд╛ред
рдЕрдЧрд░ рдХрд╣реАрдВ рдореБрдЭреЗ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдЬреБрдмрд╛рди рдмрдВрдзреА рд╣реБрдИ рд╣реИ (рдФрд░ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ) рдФрд░ рдкрд╛рда рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╛ рдЖрдк рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╢рдмреНрдж рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЦрд╝реБрд╢реА рд╕реЗ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реБрдиреВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In149235/


All Articles