Π’ ΠΌΠΈΡ€Π΅ высоконагруТСнных систСм Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ вопрос ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ запросов стоит особСнно остро. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π΄ΠΈΠ»Π΅ΠΌΠΌΠΎΠΉ: ΠΊΠ°ΠΊΠΎΠ΅ соСдинСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° прилоТСния? НаиболСС распространСнная дискуссия разворачиваСтся Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ² соСдинСний: INNER JOIN (Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅) ΠΈ LEFT JOIN (Π›Π΅Π²ΠΎΠ΅). Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ влияСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Π½ΠΎ ΠΈ Π½Π° ΠΏΠ»Π°Π½ выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строит сСрвСр Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

МногиС ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· соСдинСний всСгда быстрСС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ. Однако Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ контСкста: наличия индСксов, объСма ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ, Ρ‡Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ, ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΡ‚Π±ΠΎΡ€Ρ‹ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€. ПониманиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π‘Π£Π‘Π” (SQL Server, PostgreSQL ΠΈΠ»ΠΈ встроСнный сСрвСр 1Π‘) позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эффСктивно Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ… записСй.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ отличия Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии использования ΠΈ Π΄Π°Π΄ΠΈΠΌ практичСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π°ΡˆΠΈΡ… запросов Π² конфигурациях 1Π‘:ERP ΠΈ 1Π‘:Π£Π’.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ соСдинСний Π² языкС запросов 1Π‘

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ скорости, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ выполнСния. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… нашлось соотвСтствиС Π² ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. Если Π² ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅Ρ‚ подходящСй записи, строка ΠΈΠ· Π»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ просто ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ. Π­Ρ‚ΠΎ суТаСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сразу Π½Π° этапС формирования.

Π›Π΅Π²ΠΎΠ΅ соСдинСниС, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС строки ΠΈΠ· Π»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Π»ΠΈ соотвСтствиС Π² ΠΏΡ€Π°Π²ΠΎΠΉ. Если соотвСтствия Π½Π΅Ρ‚, поля ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ значСниями NULL. ИмСнно эта ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ β€” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ "Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅" строки β€” часто Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ запрос, транслятор 1Π‘ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ SQL-ΠΊΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π”. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ статистику ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ физичСски ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: Ρ‡Π΅Ρ€Π΅Π· Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, Ρ…Π΅Ρˆ-соСдинСниС ΠΈΠ»ΠΈ слияниС. Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΈΠΏΠ°Ρ… соСдинСний Π΄ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ограничСния.

πŸ’‘

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‚Π±ΠΎΡ€ ΠΏΠΎ полю ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ Π»Π΅Π²ΠΎΠΌ соСдинСнии, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ находится Π² сСкции Π£Π‘Π›ΠžΠ’Π˜Π―, Π° Π½Π΅ Π² сСкции Π“Π”Π•, ΠΈΠ½Π°Ρ‡Π΅ соСдинСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПовСдСниС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΈ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π‘Π£Π‘Π” (MS SQL, PostgreSQL). Π’ΠΎ, Ρ‡Ρ‚ΠΎ быстро Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ записСй.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π’ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ… условиях, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС ΠΈΠ»ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ быстро, ΠΊΠ°ΠΊ Π»Π΅Π²ΠΎΠ΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° кроСтся Π² объСмС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС отбрасываСт лишниС строки Ρ€Π°Π½ΡŒΡˆΠ΅, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈ использовании LEFT JOIN сСрвСр Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сохранСниС всСх строк Π»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, измСнСнию порядка соСдинСния Ρ‚Π°Π±Π»ΠΈΡ† (reordering). ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ сначала ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всю Π»Π΅Π²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ соотвСтствия Π² ΠΏΡ€Π°Π²ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… становится ΡƒΠ·ΠΊΠΈΠΌ мСстом.

Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π½ΠΈΡ†Π° Π² скорости становится Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если ΠΎΠ±Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ нСбольшиС ΠΈΠ»ΠΈ Ссли ΠΏΠΎ полям соСдинСния построСны эффСктивныС индСксы, Π‘Π£Π‘Π” справляСтся с Π·Π°Π΄Π°Ρ‡Π΅ΠΉ практичСски ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… случаях. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† содСрТит ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй, Π° индСксы ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ являСтся ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ. Если Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ 90% строк Π»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° Ρ€Π°Π½Π½Π΅ΠΌ этапС, это Π΄Π°Π΅Ρ‚ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ. Π›Π΅Π²ΠΎΠ΅ соСдинСниС Ρ‚Π°ΠΊΠΎΠΉ возмоТности Π½Π΅ прСдоставляСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ обязано Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ 100% строк Π»Π΅Π²ΠΎΠΉ части.

πŸ’‘

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… свободнСС ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок ΠΎΠ±Ρ…ΠΎΠ΄Π° Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‡Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ быстрому ΠΏΠ»Π°Π½Ρƒ выполнСния.

ВлияниС ΠΎΡ‚Π±ΠΎΡ€ΠΎΠ² ΠΈ условий Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния

Бамая частая ошибка, ΡƒΠ±ΠΈΠ²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π²Ρ‹Ρ… соСдинСний β€” Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ условий Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Если Π²Ρ‹ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ ТСсткий ΠΎΡ‚Π±ΠΎΡ€ Π½Π° ΠΏΠΎΠ»Π΅ ΠΈΠ· ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² сСкции Π“Π”Π•, Π²Ρ‹ фактичСски ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ Π»Π΅Π²ΠΎΠ΅ соСдинСниС Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅, Π½ΠΎ сохраняСтС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ LEFT JOIN.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Ρ†Π΅Π½Ρ‹ ΠΈΠ· рСгистра свСдСний. Если Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ условиС Π“Π”Π• Π¦Π΅Π½Π°.Π¦Π΅Π½Π° > 100, Ρ‚ΠΎ всС Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π±Π΅Π· Ρ†Π΅Π½Ρ‹ (Π³Π΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL) Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹. Но сСрвСр сначала ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ рСсурсы Π½Π° построСниС Π»Π΅Π²ΠΎΠ³ΠΎ соСдинСния, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π­Ρ‚ΠΎ двойная Ρ€Π°Π±ΠΎΡ‚Π°.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ условия Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Π£Π‘Π›ΠžΠ’Π˜Π― самого соСдинСния. Π’ этом случаС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ примСняСтся Π² процСссС соСдинСния, ΠΈ Ссли условия Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, строка просто Π½Π΅ дополняСтся Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΎΡΡ‚Π°Π²Π°ΡΡΡŒ Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ с пустыми полями (Ссли это допустимо Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ) ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡΡΡŒ эффСктивнСС.

  • πŸš€ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ΅ΠΊΡ†ΠΈΡŽ Π£Π‘Π›ΠžΠ’Π˜Π― для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ Π»Π΅Π²ΠΎΠΌ соСдинСнии.
  • πŸ›‘ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² условиях соСдинСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ использованиС индСксов.
  • πŸ“Š ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΏΠ»Π°Π½ выполнСния запроса Ρ‡Π΅Ρ€Π΅Π· консоль администрирования ΠΈΠ»ΠΈ SQL Profiler.

Иногда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π»Π΅Π²ΠΎΠ΅ соСдинСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ "сиротскиС" записи β€” Ρ‚Π΅, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΠΏΠ°Ρ€Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях добавляСтся условиС Π“Π”Π• ΠŸΡ€Π°Π²Π°ΡΠ’Π°Π±Π»ΠΈΡ†Π°.ΠšΠ»ΡŽΡ‡ Π•Π‘Π’Π¬ NULL. Π’Π°ΠΊΠΈΠ΅ запросы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ тяТСлыми, ΠΈ ΠΈΡ… слСдуСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с особой Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, провСряя Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ индСксов ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ полям.

Π’Π°Π±Π»ΠΈΡ†Π° сравнСния характСристик соСдинСний

Для наглядности свСдСм основныС различия Π² структурированный Π²ΠΈΠ΄. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ быстро ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ.

Π₯арактСристика Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ (INNER) Π›Π΅Π²ΠΎΠ΅ (LEFT)
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ строки Волько ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ВсС ΠΈΠ· Π»Π΅Π²ΠΎΠΉ + ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ· ΠΏΡ€Π°Π²ΠΎΠΉ
ВлияниС Π½Π° ΠΏΠ»Π°Π½ выполнСния Высокая свобода ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ пСрСстановку Ρ‚Π°Π±Π»ΠΈΡ†
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° NULL Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π˜ΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ автоматичСски Π’Ρ€Π΅Π±ΡƒΡŽΡ‚ явной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅
Випичная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π’Ρ‹ΡˆΠ΅ (ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…) НиТС ΠΈΠ»ΠΈ равная

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ соСдинСниС Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² гибкости для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Однако это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»Π΅Π²ΠΎΠ΅ соСдинСниС Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ любой Ρ†Π΅Π½ΠΎΠΉ. Если бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π΄Π°ΠΆΠ΅ Ρ‚Π΅, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°, Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π»Π΅Π²ΠΎΠ³ΠΎ соСдинСния, ΠΈ Π·Π°Π΄Π°Ρ‡Ρƒ программиста β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ максимально быстрым.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΠΏΠ»Π°Π½Π΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "Table Scan" (ΠΏΠΎΠ»Π½ΠΎΠ΅ сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹) вмСсто "Index Seek", это Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ соСдинСниС ΠΈΠ»ΠΈ условия ΠΎΡ‚Π±ΠΎΡ€Π° составлСны Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ.

πŸ“Š Какой Ρ‚ΠΈΠΏ соСдинСния Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ (Inner)
Π›Π΅Π²ΠΎΠ΅ (Left)
ΠŸΡ€Π°Π²ΠΎΠ΅ (Right)
ПолноС (Full)

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запросов с использованиСм Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†

Π’ слоТных сцСнариях, ΠΊΠΎΠ³Π΄Π° прямоС соСдинСниС Π΄Π²ΡƒΡ… ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹, цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌ позволяСт Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° нСсколько простых этапов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… оптимизируСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, примСняя всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΡ‚Π±ΠΎΡ€Ρ‹. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ создаСтС индСкс Π½Π° этой Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого выполняСтС соСдинСниС с Π΄Ρ€ΡƒΠ³ΠΎΠΉ большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ часто Π΄Π°Π΅Ρ‚ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² Ρ€Π°Π·Ρ‹ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ запросом.

ВЫБРАВЬ

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Бсылка,

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π°

ΠŸΠžΠœΠ•Π‘Π’Π˜Π’Π¬ Π’Π’_Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

Π“Π”Π•

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° ΠœΠ•Π–Π”Π£ &ΠΠ°Ρ‡ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π° И &ΠšΠΎΠ½ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π°

;

ВЫБРАВЬ

Π’Π’_Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Бсылка,

РСгистр.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ

Π˜Π—

Π’Π’_Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• РСгистрНакоплСния.ВоварыНаБкладах КАК РСгистр

ПО Π’Π’_Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Бсылка = РСгистр.Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

ИспользованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… с мноТСством Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ вычислСний. Π­Ρ‚ΠΎ позволяСт ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ сСрвСра 1Π‘ ΠΈ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° эффСктивныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π‘Π£Π‘Π”.

Когда Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ?

Если объСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ°Π» (нСсколько тысяч записСй), Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° созданиС ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ‹ΡΠΈΡ‚ΡŒ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ.

Роль индСксов Π² ускорСнии соСдинСний

Никакой Ρ‚ΠΈΠΏ соСдинСния Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстро Π±Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… индСксов. Поля, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ происходит соСдинСниС (ПО), Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ проиндСксированы. Π’ конфигурациях 1Π‘ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ обСспСчиваСтся автоматичСски для основных Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ справочников, Π½ΠΎ для рСгистров ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π·Π° этим Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ.

ОсобСнно Π²Π°ΠΆΠ½ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ индСксов для ΠΏΠΎΠ»Π΅ΠΉ, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² условиях ΠΎΡ‚Π±ΠΎΡ€Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ соСдинСния. Если Π²Ρ‹ соСдиняСтС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ составному ΠΊΠ»ΡŽΡ‡Ρƒ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ порядок ΠΏΠΎΠ»Π΅ΠΉ Π² индСксС соотвСтствуСт порядку ΠΈΡ… использования Π² запросС (Π»Π΅Π²ΠΎΠ΅ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎ).

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘ Π΅ΡΡ‚ΡŒ инструмСнт "Консоль запросов", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст запроса ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ индСксы Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹. РСгулярный Π°ΡƒΠ΄ΠΈΡ‚ запросов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого инструмСнта ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ станут ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π±Π°Π·Π΅.

  • πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ свойства ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅: Ρ„Π»Π°Π³ "Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅" Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн.
  • βš™οΈ Для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† создавайтС индСксы ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π‘ΠžΠ—Π”ΠΠ’Π¬ Π˜ΠΠ”Π•ΠšΠ‘ сразу послС заполнСния.
  • πŸ“ˆ ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΡŒΡ‚Π΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ запросы Ρ‡Π΅Ρ€Π΅Π· ΠΆΡƒΡ€Π½Π°Π» рСгистрации событий.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство индСксов Ρ‚ΠΎΠΆΠ΅ Π²Ρ€Π΅Π΄Π½ΠΎ: ΠΎΠ½ΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‚ запись Π΄Π°Π½Π½Ρ‹Ρ…. Баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ чтСния (запросов) ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ записи β€” ΠΊΠ»ΡŽΡ‡ ΠΊ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ инструмСнты администрирования ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ руководством администратора для вашСй вСрсии 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΈ Ρ‡Π΅ΠΊ-лист ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

Подводя ΠΈΡ‚ΠΎΠ³, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΈ Π»Π΅Π²Ρ‹ΠΌ соСдинСниСм Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Π° Π½Π΅ абстрактными прСдставлСниями ΠΎ скорости. Однако, Ссли Π»ΠΎΠ³ΠΈΠΊΠ° допускаСт ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ слСдуСт ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ соСдинСнию.

Если ΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π΅Π²ΠΎΠ΅ соСдинСниС, слСдуйтС ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: выноситС ΠΎΡ‚Π±ΠΎΡ€Ρ‹ Π² условия соСдинСния, провСряйтС индСксы ΠΈ рассматривайтС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ разбиСния запроса Π½Π° части. НС Π±ΠΎΠΉΡ‚Π΅ΡΡŒ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Ρ€ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя выполнСния Π² вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ инфраструктурС.

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ соСдинСния

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС возмоТностСй языка запросов 1Π‘ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ростС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ сотСн Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚. Π˜Π½Π²Π΅ΡΡ‚ΠΈΡ†ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ нюансов Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π‘Π£Π‘Π” ΠΎΠΊΡƒΠΏΠ°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра.

FAQ: Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π»Π΅Π²ΠΎΠ΅ соСдинСниС Π±Ρ‹Ρ‚ΡŒ быстрСС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ?

ВСорСтичСски Π΄Π°, Π² ΠΎΡ‡Π΅Π½ΡŒ спСцифичСских случаях, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π‘Π£Π‘Π” ΠΎΡˆΠΈΠ±Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΠ»Π°Π½Π° для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ соСдинСния ΠΈΠ·-Π·Π° Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ статистики, Π° для Π»Π΅Π²ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ, ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ статистику Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π°ΠΊΡƒΡŽ аномалию.

Как Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ запросы Π² 1Π‘?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ тСхнологичСский ΠΆΡƒΡ€Π½Π°Π» (Π’Π–) сСрвСра 1Π‘. НастройтС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ событий с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ выполнСния Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 сСкунда). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, доступныС Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ ИВБ.

ВлияСт Π»ΠΈ вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ соСдинСний?

Π”Π°, с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсиСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ транслятор запросов ΠΈ взаимодСйствиС с Π‘Π£Π‘Π”. НовыС вСрсии ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ SQL-ΠΊΠΎΠ΄ для Ρ‚Π΅Ρ… ΠΆΠ΅ самых конструкций языка запросов, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ приросту скорости Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли запрос с Π»Π΅Π²Ρ‹ΠΌ соСдинСниСм Π²Π΅ΡˆΠ°Π΅Ρ‚ Π±Π°Π·Ρƒ?

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΡ€Π΅Ρ€Π²ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ»Π°Π½ запроса. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ запрос Π½Π° этапы с использованиСм Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ блокируСтся Π»ΠΈ запрос Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ транзакциями (ошибками Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²).