Π₯ΠΈΠ½ΡΡ sql ΡΡΠΎ ΡΡΠΎ
ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ ΠΈΠ½ΡΡ Π² T-SQL. ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. Π’ΠΠ 10
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ! Π Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ 10 ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Ρ ΠΈΠ½ΡΠΎΠ² ΡΠ·ΡΠΊΠ° T-SQL, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Microsoft SQL Server, ΠΈΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Ρ ΠΈΠ½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΈΠ½ΡΡ Π½ΡΠΆΠ½ΠΎ Π² ΡΠ°ΠΌΡΡ ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΡΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ°, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² SQL Server ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΡΠΎΠΈΡ ΡΠ°ΠΌΡΠΉ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°Π½Π°, Ρ.Π΅. Π΅ΡΠ»ΠΈ ΠΏΠ»Π°Π½ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ°Π½Π΅Ρ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ, SQL Server Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡ.
Π Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Ρ ΠΈΠ½ΡΡ, ΠΌΡ ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π΅ΠΌ SQL Server Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ.Π΅. Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ², Π²Π»ΠΈΡΡΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠΎΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π°, ΡΡΠΎΡ ΠΏΠ»Π°Π½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠ΅Π½ ΠΈ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Ρ ΠΈΠ½ΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅, ΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΡΠΈΡ Ρ ΠΈΠ½ΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ ΠΈ Π±Π΅Π· Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅.
Π’ΠΠ 10 ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Ρ ΠΈΠ½ΡΠΎΠ²
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ 10 ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Ρ ΠΈΠ½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² production, ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Ad Hoc Π·Π°ΠΏΡΠΎΡΠΎΠ².
NOLOCK
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Β«Π³ΡΡΠ·Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅Β». ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ READ UNCOMMITTED. Π₯ΠΈΠ½Ρ NOLOCK ΡΠ°Π²Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ Ρ ΠΈΠ½ΡΡ READUNCOMMITTED.
ΠΡΠΎΡ Ρ ΠΈΠ½Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈΠ»ΠΈ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Ρ ΡΠ΅Π»ΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠ±ΠΎΡΠΎΠΊ, Ρ.Π΅. ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈ ΡΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Π°.
NOEXPAND
ΠΡΠΎΡ Ρ ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ.
Π₯ΠΈΠ½Ρ NOEXPAND ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ΅Π»ΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠ±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
RECOMPILE
ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ SQL Server, ΡΡΠΎ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠΎΠΈΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΡΠΎΡ Ρ ΠΈΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π² ΠΊΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ»Π°Π½ Π·Π°ΠΏΡΠΎΡΠ°, Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΡ .
RECOMPILE ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
OPTIMIZE FOR
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°, Π½ΠΎ Π½Π΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Β«Parameter sniffingΒ», ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ OPTIMIZE FOR UNKNOWN ΠΏΠΎΠ΄ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
TABLOCK
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π±Π»ΠΈΡΡ.
Π₯ΠΈΠ½Ρ TABLOCK ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ ΠΏΠΎ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ (INSERT), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
ROWLOCK
ΠΡΠΎΡ Ρ ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊ.
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΡ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ (UPDATE), Π΅Π³ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Ρ ΡΠ΅Π»ΡΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠΎ Π² ΡΠ΅ΠΎΡΠΈΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ°ΠΌΠ΅ΡΠΊΠ°! ΠΡΠ΅ΠΌ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΡΠ·ΡΠΊΠΎΠΌ SQL, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³Ρ Β«SQL ΠΊΠΎΠ΄Β» β ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΡΠ·ΡΠΊΡ SQL Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². Π Π½Π΅ΠΉ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ°.
READPAST
Π₯ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ SQL Server, ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ Ρ ΠΈΠ½Ρ READPAST, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠΎΠΊ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, Ρ.Π΅. SQL Server Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ½ΡΡΡ.
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ SQL Server, Ρ.Π΅. ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π΅Π²Π°ΠΆΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
MAXDOP
Π₯ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π·Π°Π΄Π°ΡΡΠΈΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.
MAXDOP ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ Ρ ΡΠ΅Π»ΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (MAXDOP 1).
INDEX
ΠΡΠΎΡ Ρ ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΈΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊ Π·Π°ΠΏΡΠΎΡΡ.
INDEX ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ SQL Server Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ» ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΠΎΡΠΌΠ΅ΡΠ΅Π½ΠΎ, ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π°ΠΏΡΠΎΡΡ Ρ Ρ ΠΈΠ½ΡΠΎΠΌ INDEX Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Ρ.Π΅. ΡΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΅ΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅Ρ.
FORCE ORDER
ΠΠ°Π½Π½ΡΠΉ Ρ ΠΈΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ°.
FORCE ORDER ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ , ΠΊΠΎΠ³Π΄Π° SQL Server ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π½Π΅ ΡΠΎΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π±Ρ ΡΠ°ΠΌΡΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ.
ΠΠ°ΠΌΠ΅ΡΠΊΠ°! ΠΡΠ»ΠΈ ΠΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΠ΅ Ρ ΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π», ΡΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΡΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ ΠΈΠ½ΡΡ Π² T-SQL (Microsoft SQL Server)
ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡ ΠΠ°Ρ Π½Π° ΡΠ°ΠΉΡΠ΅ Info-Comp.ru! Π Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΌΡ Ρ ΠΠ°ΠΌΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ Ρ ΠΈΠ½ΡΡ Π² ΡΠ·ΡΠΊΠ΅ T-SQL (Microsoft SQL Server), ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ Ρ ΠΈΠ½ΡΠΎΠ² Π±ΡΠ²Π°ΡΡ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΈΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ ΠΌΡ Ρ ΠΠ°ΠΌΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π² Microsoft SQL Server, ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ°, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΆΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°, Π° Π²Π»ΠΈΡΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π· Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ρ ΠΈΠ½ΡΠΎΠ².
Π₯ΠΈΠ½ΡΡ Π² T-SQL
Π₯ΠΈΠ½Ρ (hint) β ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ SQL ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ρ ΠΈΠ½ΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΡΠΏΠΈΡΡ Π² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ, ΠΈΠ»ΠΈ, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π½Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Β«Π³ΡΡΠ·Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅Β».
ΠΠ±ΡΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² SQL Server Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ°ΠΌΡΠΉ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅Π΄ΠΊΠΎ ΠΎΡΠΈΠ±Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ, Ρ.Π΅. Ρ ΠΈΠ½ΡΡ, Π±Π΅Π· ΠΎΡΡΡΠΎΠΉ Π½Π° ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΡΠ΅ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠ»Π°Π½, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ, ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ρ ΠΈΠ½ΡΠΎΠ², ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΡΡΡΠΏΠΈΡΡ Π² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΠΈΠ½ΡΠΎΠ² ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΡΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡ Ρ Ρ ΠΈΠ½ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ , ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅, ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, Ρ.Π΅. Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, Π½Π΅ ΠΏΡΠΎΡΡΠ΄Π΅Ρ Π»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Ρ Π½Π°ΡΠΈΠΌ Ρ ΠΈΠ½ΡΠΎΠΌ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ , ΠΈΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π½Π°Ρ Ρ ΠΈΠ½Ρ ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅! Π€Π°ΠΊΡΠΎΡΠΎΠ², Π²Π»ΠΈΡΡΡΠΈΡ Π½Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΠ½ΡΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΡΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Π΄Π° ΠΈ ΡΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΡΠ°ΠΉΠ½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅Ρ.
Π’ΠΈΠΏΡ Ρ ΠΈΠ½ΡΠΎΠ² Π² T-SQL
Π Microsoft SQL Server Ρ ΠΈΠ½ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ΅ΠΊΡΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠ°, ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ Ρ ΠΈΠ½ΡΠΎΠ².
Join Hints
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΠΈΠ½ΡΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π»ΠΈΡΡΡ Π½Π° Π²ΡΠ±ΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Ρ ΠΈΠ½ΡΡ:
ΠΡΠΈΠΌΠ΅Ρ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ρ ΠΈΠ½ΡΠ° Hash ΠΌΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π΄Π°Π»ΠΈ ΡΠΈΠΏ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ Hash Match.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΠΈΠΏΠ°Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅.
Query Hints
Π₯ΠΈΠ½ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ Π½Π° Π²Π΅ΡΡ Π·Π°ΠΏΡΠΎΡ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² SQL ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Ρ ΠΈΠ½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° OPTION. Π SQL Π·Π°ΠΏΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OPTION, ΠΏΡΠΈ ΡΡΠΎΠΌ Π² Π½Π΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΈΠ½ΡΠΎΠ².
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Ρ ΠΈΠ½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ OPTION ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ):
ΠΡΠΈΠΌΠ΅Ρ.
Π ΡΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Ρ ΠΈΠ½Ρ RECOMPILE.
Table Hints
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ Ρ ΠΈΠ½ΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ. Π’Π°ΠΊΠΈΠ΅ Ρ ΠΈΠ½ΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ.
ΠΠ°ΠΌΠ΅ΡΠΊΠ°! ΠΡΠ΅ΠΌ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΡΠ·ΡΠΊΠΎΠΌ SQL, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³Ρ Β«SQL ΠΊΠΎΠ΄Β» β ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΡΠ·ΡΠΊΡ SQL Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². Π Π½Π΅ΠΉ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ°.
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ Ρ ΠΈΠ½ΡΠΎΠ²:
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ Ρ ΠΈΠ½ΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° WITH, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ Production.Product ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ Ρ ΠΈΠ½Ρ INDEX, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π»ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π° Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ Production.ProductReview ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ Ρ ΠΈΠ½Ρ NOLOCK, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ READ UNCOMMITTED, Ρ.Π΅. ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ Π½Π΅ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄ΡΠ½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π³ΡΡΠ·Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅).
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΠΎ Π²ΡΠ΅, Π½Π°Π΄Π΅ΡΡΡ, ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π±ΡΠ» ΠΠ°ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΏΠΎΠΊΠ°!
Π₯ΠΈΠ½ΡΡ ΠΏΠ»Π°Π½Π΅ΡΠ° Π² PostgreSQL
ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ SQL β Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Β«ΡΡΠΎΒ» ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ· Π±Π°Π·Ρ, Π° Β«ΠΊΠ°ΠΊΒ» ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ β Π‘Π£ΠΠ ΡΠ΅ΡΠ°Π΅Ρ ΡΠ°ΠΌΠ°. ΠΠ°Π΄Π°ΡΡ Π²ΡΠ±ΠΎΡΠ° Π΄Π»Ρ SQL-Π·Π°ΠΏΡΠΎΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ(ΠΏΠ»Π°Π½Π°) ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΉ Π‘Π£ΠΠ. ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π΅ ΡΠ°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ ΠΏΠ»Π°Π½. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ Π‘Π£ΠΠ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π° ΡΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ Β«Ρ ΠΈΠ½ΡΡΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π² ΡΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π±Π°Π·Π΅, ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ. Π Open Source Π‘Π£ΠΠ PostgreSQL ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π½Π΅ Π±ΡΠ»ΠΎ.
Π Π²ΠΎΡ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠΎ, ΠΎ ΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ΅ΡΡΠ°Π»ΠΈ ΠΈ ΡΠ΅Π³ΠΎ ΡΠΆΠ΅ ΡΡΡΠ°Π»ΠΈ ΠΆΠ΄Π°ΡΡ, Π° Π΄ΡΡΠ³ΠΈΠ΅ Π±ΠΎΡΠ»ΠΈΡΡ. Π―ΠΏΠΎΠ½ΡΠΊΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ· NTT ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Ρ ΠΈΠ½ΡΡ ΠΏΠ»Π°Π½Π΅ΡΠ° PostgreSQL. ΠΡΠΈΡΠ΅ΠΌ, ΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½Π΅ ΠΌΠ΅Π½ΡΡ ΡΠ΄ΡΠΎ, Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ pg_hint_plan, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π²Π΅ΡΡΠΈΠΈ PostgreSQL 9.1 ΠΈ 9.2. ΠΠΎΠ΄ΡΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Ρ ΠΈΠ½ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ GUC. ΠΠ° Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
Π‘ ΡΠ°ΠΉΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π°ΡΡ ΠΈΠ²Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ Π²Π΅ΡΡΠΈΠΈ 9.1 ΠΈ 9.2, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΏΡΠ°Π²Π΄Π°, Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½ΠΈΡΠ΅ΠΌ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄ ΠΎΠ±Π΅ Π²Π΅ΡΡΠΈΠΈ. ΠΡ Π΄Π° Π»Π°Π΄Π½ΠΎ. Π‘Π±ΠΎΡΠΊΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ: make && make install. ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ dev-ΠΏΠ°ΠΊΠ΅Ρ PostgreSQL ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π»ΡΠ±ΠΈΠΌΠΎΠ³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ PostgreSQL ΠΏΠΎΠ΄Ρ Π²Π°ΡΠΈΠ» ΠΌΠΎΠ΄ΡΠ»Ρ, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ SQL Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ pg_hint_plan Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ shared_preload_libraries Π² ΡΠ°ΠΉΠ»Π΅ postgresql.conf (Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΡΡΠΈΡ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ LOAD). ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΠ°Π½ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΡΠΈ Π½ΠΎΠ²ΡΠ΅ GUC ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: pg_hint_plan.enable_hint, pg_hint_plan.debug_print, pg_hint_plan.parse_messages. ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Ρ ΠΈΠ½ΡΠΎΠ² (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ), ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π΄Π²Π΅ β Π·Π° Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
Π₯ΠΈΠ½ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΊ Π·Π°ΠΏΡΠΎΡΡ, ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ /* ΠΈ */. Π§ΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ Ρ ΠΈΠ½Ρ, Ρ Π½Π΅Π³ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΎΡΡΡ Π·Π½Π°ΠΊ +, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ /*+ SeqScan(t1) */. Π₯ΠΈΠ½ΡΡ Π±ΡΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΠΈΠ΄ΠΎΠ².
Π₯ΠΈΠ½ΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ
Π₯ΠΈΠ½ΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ Π½Π°Ρ Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ, ΡΠΈΠ»ΡΡΡΡΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π΄Π²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ.
ΠΠ»Π°Π½Π΅Ρ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Bitmap Scan.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ Index Scan.
Π Π΄Π°ΠΆΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠ»ΠΎΠΆΠ½Π΅Π΅. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°Π±Π»ΠΈΡ Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΏΠΎΠ»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΏΠΎΠ»Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΈ LIMIT.
ΠΠ»Π°Π½Π΅Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠ»Π°Π½ c Index Scan ΠΏΠΎ test1_value1_idx ΠΈ Nested Loop.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ: HashJoin.
ΠΠ»Π°Π½Π΅Ρ ΠΏΠΎΠ΄ΡΠΈΠ½ΠΈΡΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²Π½ΡΡΡΡ Bitmap Index Scan ΠΏΠΎ test2, Π° ΡΠ½Π°ΡΡΠΆΠΈ β ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Ρ Limit.
ΠΡΠ»ΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π·Π°Π΄Π°ΡΡ ΡΠΈΠΏ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ MergeJoin ΠΈ IndexScan ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ test2_value_idx, ΡΠΎ ΠΏΠ»Π°Π½Π΅Ρ, ΠΎΠΏΡΡΡ ΡΠ°ΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Limit.
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ (Transact-SQL)
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ (DML). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ± Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅, ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π°Π΄Π°ΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ DML ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² SQL Server ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΡΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°.
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ:

Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Transact-SQL Π΄Π»Ρ SQL Server 2014 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ, ΡΠΌ. Π² ΡΡΠ°ΡΡΠ΅ ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π²Π΅ΡΡΠΈΡΠΌ.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ
WITH (
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π·Π°Π΄Π°ΡΡΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ WITH. Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠΈ.
ΠΡΠΎΠΏΡΡΠΊ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° WITH ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ: Π Π±ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Microsoft SQL Server ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΡΠΊΠ°Π·Π°Π½Π° Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ WITH:
ΠΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΡΡΠ΅.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π° Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΏΡΡΡΡ , ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ. Π Π±ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Microsoft SQL Server ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
NOEXPAND
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ NOEXPAND ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ NOEXPAND.
ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, INDEX(0) Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π° INDEX(1) β ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π½Π΅ΠΌΡ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, INDEX(0) Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ, Π° INDEX(1) ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠ»ΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π² ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ. ΠΡΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΡΠΎ Π²ΡΠ±ΠΎΡΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ SQL Server Database Engine Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ.
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΡΡΡΠ»Π°ΡΡΠ΅Π΅ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°ΠΊΡΠΎΠ² Π² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° Β«Π·Π²Π΅Π·Π΄Π°Β», ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΠΠ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π² ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠ°Π²Π½ΠΎ 250 Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ.
KEEPIDENTITY
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ BULK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ OPENROWSET.
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ KEEPIDENTITY Π½Π΅ ΡΠΊΠ°Π·Π°Π½, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ, Π½ΠΎ Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ, Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΄Π°Π½Π½ΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π° ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΡΡΠΎΡ ΡΡΠΎΠ»Π±Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ»Ρ Π΄Π°Π½Π½ΡΡ (SQL Server). ΠΡΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠ΅Π½, ΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π² ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ DBCC CHECKIDENT (Transact-SQL).
KEEPDEFAULTS
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ BULK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ OPENROWSET.
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π²ΡΡΠ°Π²ΠΊΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ, Π²ΠΌΠ΅ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NULL, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERTβ¦ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ SELECT * FROM OPENROWSET(BULK. ) ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ NULL ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΌ ΠΈΠΌΠΏΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΡ (SQL Server).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ SQL Server 2008 R2 Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ 1 (SP1), ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
index_value
ΠΠΌΡ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π£ΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° 0 (ΠΊΡΡΠ°) Π½Π΅Π»ΡΠ·Ρ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π·Π°ΠΏΡΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° sys.indexes.
index_column_name
ΠΡΠΎ ΠΈΠΌΡ ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ°. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESEEK Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ FORCESEEK Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ INDEX. ΠΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠΎΠΈΡΠΊ, ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ°. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° FORCESEEK ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
| Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ | ΠΡΠΈΠΌΠ΅Ρ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
| ΠΠ΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ INDEX ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° | FROM dbo.MyTable WITH (FORCESEEK) | ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ ΡΠ΅ΡΠ΅Π· Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. |
| Π ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΎΠΉ INDEX | FROM dbo.MyTable WITH (FORCESEEK, INDEX (MyIndex)) | ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ. |
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠ° | FROM dbo.MyTable WITH (FORCESEEK (MyIndex (col1, col2, col3))) | ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. |
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ FORCESEEK (Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ ) ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΡΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌΠΈ:
ΠΡΠ»ΠΈ FORCESEEK ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ:
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESEEK Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΠΏΠ»Π°Π½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡ FORCESEEK Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Plan cannot be generated Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ . Π Π±ΡΠ΄ΡΡΠΈΡ Π²ΡΠΏΡΡΠΊΠ°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΡΡΠΈΡ ΠΏΠ»Π°Π½ΠΎΠ².
FORCESCAN ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ: SQL Server 2008 R2 Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ 1 (SP1) ΠΈ Π²ΡΡΠ΅. Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESCAN ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π² ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°Ρ , Π³Π΄Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π΅Π΄ΠΎΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΡΠΎΠΊ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ°, Π° Π½Π΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ, ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°.
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESCAN ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΎ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ INDEX ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ. Π ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ( INDEX = index_name, FORCESCAN ) ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESCAN ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ° INDEX(0) Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠ»Ρ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESCAN ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΡΠ΅ΠΊΡΠΈΡΡ , Π° Π½Π΅ Π²ΠΎ Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅.
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESCAN ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
HOLDLOCK
Π Π°Π²Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ SERIALIZABLE. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ SERIALIZABLE ΡΠΌ. Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅. ΠΡΠ³ΡΠΌΠ΅Π½Ρ HOLDLOCK ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ½ Π·Π°Π΄Π°Π½, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ HOLDLOCK Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ SELECT, Π²ΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ FOR BROWSE.
IGNORE_CONSTRAINTS
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ BULK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ OPENROWSET.
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ INSERT ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΡ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΡΠ»ΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π·Π°Π΄Π°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ IGNORE_CONSTRAINTS, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ INSERT Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ UNIQUE, PRIMARY KEY ΠΈΠ»ΠΈ NOT NULL.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ CHECK ΠΈ FOREIGN KEY ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½Π°ΡΡΡΠ°ΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ CHECK ΠΈ FOREIGN KEY ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΡΡΠΊΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Transact-SQL.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ CHECK ΠΈ FOREIGN KEY ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ is_not_trusted Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° sys.check_constraints ΠΈΠ»ΠΈ sys.foreign_keys. Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌ. ΠΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° Π½Π΅ Π±ΡΠ»Π° ΠΏΡΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°, Π·Π°ΡΡΠ°ΡΡ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π²ΡΡΠΈΡΡ Π·Π°ΡΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ CHECK ΠΈ FOREIGN KEY ΠΊ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ.
IGNORE_TRIGGERS
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ BULK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ OPENROWSET.
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΡΠΈΠ³Π³Π΅ΡΡ.
ΠΡΠ³ΡΠΌΠ΅Π½Ρ IGNORE_TRIGGERS ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΠΈ Π²Π°ΠΆΠ½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
NOLOCK
Π Π°Π²Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ READUNCOMMITTED. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ READUNCOMMITTED ΡΠΌ. Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΠ»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ UPDATE ΠΈ DELETE. Π Π±ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Microsoft SQL Server ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
PAGLOCK
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΡΠ°Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ
, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ SNAPSHOT, ΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° PAGLOCK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ UPDLOCK ΠΈΠ»ΠΈ HOLDLOCK.
READCOMMITTED
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π΄Π»Ρ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ READ COMMITTED ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΡΡΡΠΎΠΊ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
READ_COMMITTED_SNAPSHOT ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ OFF, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Database Engine ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈ ΡΠ½ΠΈΠΌΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
READ_COMMITTED_SNAPSHOT ΡΠ°Π²Π½ΠΎ ON, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Database Engine Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΡΡΡΠΎΠΊ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠ²Π½ΡΡ
ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
ΠΠ»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ UPDATE ΠΈ DELETE. Π Π±ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Microsoft SQL Server ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
READCOMMITTEDLOCK
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π΄Π»Ρ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ READ COMMITTED ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Database Engine Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈ ΡΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡ
ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
READ_COMMITTED_SNAPSHOT. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠ²Π½ΡΡ
ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ SET TRANSACTION ISOLATION LEVEL (Transact-SQL). ΠΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT, Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° 4140.
READPAST
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Database Engine Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΡΠ°Π½ΠΈΡΡ, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ READPAST, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠΎΠΊ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠ°Π½ΠΈΡ β Π½Π΅ Π±ΡΠ΄ΡΡ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Database Engine Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ½ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ T1 Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 1, 2, 3, 4, 5. ΠΡΠ»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ A ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 3 Π½Π° 8, Π½ΠΎ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ SELECT * FROM T1 (READPAST) Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 1, 2, 4, 5. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ READPAST Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ SQL Server. Π‘ΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ READPAST, ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΠ»ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ, Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ, ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ½ΠΈΠΌΡΡ ΡΠ²ΠΎΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΠ³ΡΠΌΠ΅Π½Ρ READPAST ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ UPDATE ΠΈΠ»ΠΈ DELETE, ΠΈ ΠΊ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FROM. ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ READPAST Π·Π°Π΄Π°Π½ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ UPDATE, ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΎΠ½ ΡΠΊΠ°Π·Π°Π½ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ READPAST Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ ΠΈΠ· ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ INTO ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT Π·Π°Π΄Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ READPAST, ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²ΡΠΎΡΠΈΡΠ½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
ΠΡΠ³ΡΠΌΠ΅Π½Ρ READPAST ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ , Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π½Π° ΡΡΠΎΠ²Π½ΡΡ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ READ COMMITTED ΠΈΠ»ΠΈ REPEATABLE READ. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ READPAST Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ , Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ SNAPSHOT, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ UPDLOCK ΠΈΠ»ΠΈ HOLDLOCK.
Π’Π°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ READPAST Π½Π΅Π»ΡΠ·Ρ ΡΠΊΠ°Π·Π°ΡΡ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ READ_COMMITTED_SNAPSHOT ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ON ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ:
Π§ΡΠΎΠ±Ρ Π² ΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ READPAST, ΡΠ΄Π°Π»ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ READCOMMITTED (Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ) ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π² Π·Π°ΠΏΡΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ READCOMMITTEDLOCK.
READUNCOMMITTED
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ. ΠΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ, Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π° ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π΅ ΠΌΠ΅ΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π·Π° ΡΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ
, ΠΎΡΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. ΠΡΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΈΡ
ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ.
Π£ΠΊΠ°Π·Π°Π½ΠΈΡ READUNCOMMITTED ΠΈ NOLOCK ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌΠΈ READUNCOMMITTED ΠΈ NOLOCK, ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Sch-S (ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΡ Π΅ΠΌΡ) Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Sch-M (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠ° DDL ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Sch-M Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΡ Π΅ΠΌΡ. ΠΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌΠΈ READUNCOMMITTED ΠΈΠ»ΠΈ NOLOCK, Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Sch-S. Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π·Π°ΠΏΡΠΎΡ, ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Sch-S, Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Sch-M.
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ READUNCOMMITTED ΠΈ NOLOCK Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² SQL Server Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ READUNCOMMITTED ΠΈ NOLOCK Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ UPDATE ΠΈΠ»ΠΈ DELETE.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ READUNCOMMITTED ΠΈ NOLOCK Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ UPDATE ΠΈΠ»ΠΈ DELETE, Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ SQL Server. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π² Π½ΠΎΠ²ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΈΡ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΡΡΠ·Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΎΡ Β«Π³ΡΡΠ·Π½ΡΡ Β» ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠ²Π½ΡΡ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
ΠΡΠ»ΠΈ Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ 601 ΠΏΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ READUNCOMMITTED, Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ 1205), ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ.
REPEATABLEREAD
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠΎ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½Π°Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ REPEATABLE READ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠ²Π½ΡΡ
ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
ROWLOCK
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΠΎΠΊ. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΡΡΠΎΠΊ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ
, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ SNAPSHOT, ΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ROWLOCK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ UPDLOCK ΠΈΠ»ΠΈ HOLDLOCK. ROWLOCK Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ columnstore. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° 651.
SERIALIZABLE
Π Π°Π²Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ HOLDLOCK. ΠΠ°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ: ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ½ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Π»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ, ΡΡΠΎ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½Π°Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ SERIALIZABLE. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠ²Π½ΡΡ
ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
SNAPSHOT
ΠΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ: SQL Server 2014 (12.x) ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΠΉ.
ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠ΅ΠΉ SNAPSHOT. SNAPSHOT ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ (Π½Π΅ Ρ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ.
SPATIAL_WINDOW_MAX_CELLS =
ΠΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ: SQL Server 2012 (11.x) ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΠΉ.
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΅ΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π΄Π»Ρ ΡΠ΅ΡΡΠ΅Π»ΡΡΠΈΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. β ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΠΎΡ 1 Π΄ΠΎ 8192.
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ½ΠΊΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π·Π° ΡΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡΠ½ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π° ΡΡΠ΅Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΡΠΈΠ»ΡΡΡΠΎΠΌ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ°.
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π² ΡΡΡΠ½ΠΎΠΉ ΠΈ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΡΡΠ΅Π»ΡΡΠΈΠΈ ΡΠ΅ΡΠΊΠΈ.
TABLOCK
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π±Π»ΠΈΡΡ. Π’ΠΈΠΏ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ SELECT ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ TABLOCK ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Π° Π½Π΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ HOLDLOCK, ΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ Π² ΠΊΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ INSERT INTO SELECT FROM ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π·Π°Π΄Π°Π² Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ TABLOCK. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π·Π°Π΄Π°Π½Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Ρ Π½Π΅ΠΏΠΎΠ»Π½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° TABLOCK ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΠΊΡΡΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ columnstore. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΡΠ°ΡΡΠ΅ INSERT (Transact-SQL).
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΡΡΠΎΠΊ OPENROWSET Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ TABLOCK ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅Π»Π΅Π²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΆΡΡΠ½Π°Π» ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ .
TABLOCKX
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
UPDLOCK
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. UPDLOCK ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ UPDLOCK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ TABLOCK ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π½ΠΈΡ
Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½Π°Ρ (X) Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ UPDLOCK, ΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ READCOMMITTED ΠΈ READCOMMITTEDLOCK Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅Π°Π½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² SERIALIZABLE ΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ (UPDLOCK, READCOMMITTED), ΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ READCOMMITTED Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ SERIALIZABLE.
XLOCK
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ROWLOCK, PAGLOCK ΠΈΠ»ΠΈ TABLOCK, ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΡΠΎΠ²Π½Ρ Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΠΎΡΡΠΈ.
Remarks
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΏΠ»Π°Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ OPTION (EXPAND VIEWS).
ΠΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ Π½Π° Π²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ Π΄Π°Π½Π½ΡΠΉ ΠΏΠ»Π°Π½ Π·Π°ΠΏΡΠΎΡΠ°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, SQL Server Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
Π£ΠΊΠ°Π·Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ROWLOCK, UPDLOCK ΠΈ XLOCK, Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠΎΠΊΠΈ, ΠΌΠΎΠ³ΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΠΊΠ»ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ SELECT ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΊΠ»ΡΡ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅.
ΠΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΌΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, ΡΠΎ Π² ΡΠ°ΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈ Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ½Π°Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° NOLOCK Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ. Π ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π΅ΡΡΡ ΡΡΠΎΠ»Π±ΡΡ, Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ NOLOCK Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
SQL Server Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³ΡΡΠΏΠΏ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM.
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ SET Π½Π΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ CREATE INDEX (Transact-SQL).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ NOEXPAND
ΠΡΠ³ΡΠΌΠ΅Π½Ρ NOEXPAND ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ. ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ β ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ Π½Π° Π½Π΅ΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎΠ»Π±ΡΡ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ°ΠΊ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΡΠ°ΠΊ ΠΈ Π² Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ , Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°, ΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΎ SQL Server 2016 (13.x); Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ 1 (SP1) Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²ΡΠΏΡΡΠΊΠΈ SQL Server. Π‘ΠΌ. ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π²ΡΠΏΡΡΠΊΠ°Ρ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ SQL Server 2016, 2017 ΠΈ 2019 (15.x).
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠΈΡΡΠ²Π°Π» ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ» ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ NOEXPAND, Π½ΡΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² SET Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ON.
ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ SQL Azure ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ NOEXPAND.
1 ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ARITHABORT Π½Π΅ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ON, ΠΊΠΎΠ³Π΄Π° Π΄Π»Ρ ANSI_WARNINGS ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ON. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ΅Π½ΡΡΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²ΡΡΡΠ½ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ NUMERIC_ROUNDABORT Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² OFF.
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ NOEXPAND. ΠΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ΅. Π SQL Server Π½Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ Π½Π°Π·Π²Π°Π½ΠΎ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Π½ΠΈΠΌ Π½Π°ΠΏΡΡΠΌΡΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ SQL Server Database Engine Π² ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ NOEXPAND. ΠΡΠΎΠΏΡΡΠΊ ΡΡΠΎΠΉ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ ΠΎΠ± ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ, ΡΠΎΠ·Π΄Π°Π² ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π²ΡΡΡΠ½ΡΡ. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Database Engine Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΠΎΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ NOEXPAND.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°
Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π·Π°ΠΏΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ OPTION (TABLE HINT). Π’Π°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ»Π°Π½Π°. ΠΠ»Ρ Π½Π΅ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π£ΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (Transact-SQL).
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ KEEPIDENTITY, IGNORE_CONSTRAINTS ΠΈ IGNORE_TRIGGERS ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ALTER Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅ΡΡ
A. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ TABLOCK Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ Production.Product Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ AdventureWorks2012 Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΠΌΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°, ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ UPDATE.
Π. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ FORCESEEK Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ FORCESEEK Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡΡ Sales.SalesOrderDetail Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ AdventureWorks2012.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ FORCESEEK Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.


