ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² конфигурациях Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ‡Π°Ρ‰Π΅ всСго кроСтся Π² алгоритмичСских ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π° Π½Π΅ Π² слабом Β«ΠΆΠ΅Π»Π΅Π·Π΅Β». Π‘Π°ΠΌΡ‹ΠΌ распространСнным сцСнариСм, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π° ΠΈ зависания интСрфСйса, являСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запроса Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, извСстный ΠΊΠ°ΠΊ N+1 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ сСкунды, Π² процСсс, длящийся часами.

Когда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Запрос Π²Π½ΡƒΡ‚Ρ€ΡŒ Ρ†ΠΈΠΊΠ»Π° Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, систСма Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ соСдинСниС с Π‘Π£Π‘Π”, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст запроса ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ списка ΠΈΠ· 1000 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 1000 ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. НакладныС расходы Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, блокируя Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ создавая ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΉ Π½Π° сСрвСрС.

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

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

ОсновноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π²ΡƒΡ‡ΠΈΡ‚ просто: Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Β«Π½Π°ΠΉΠ΄ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π₯Β», Π·Π°Ρ‚Π΅ΠΌ Β«Π½Π°ΠΉΠ΄ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ YΒ», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ вопрос: Β«Π½Π°ΠΉΠ΄ΠΈ всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… входят Π² этот список». Π­Ρ‚ΠΎ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСтСвой интСрфСйс ΠΈ позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ Π‘Π£Π‘Π” ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный ΠΏΠ»Π°Π½ выполнСния.

ИспользованиС ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ прямых Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ-массивами позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ контСкст Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ SQL IN (..) ΠΈΠ»ΠΈ создаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² сСрвСрной памяти, Ρ‡Ρ‚ΠΎ ΠΊΡ€Π°Ρ‚Π½ΠΎ ускоряСт поиск.

Рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ двиТСния рСгистра накоплСния для списка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ запрос ΠΊ рСгистру. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ссылки Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΏΠΎ этому Π½Π°Π±ΠΎΡ€Ρƒ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Π±ΠΎΠ»Π΅Π΅ 500-1000 элСмСнтов) Π² ΠΎΠ΄ΠΈΠ½ запрос слСдитС Π·Π° Π΄Π»ΠΈΠ½ΠΎΠΉ тСкста SQL-запроса. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… конфигурациях Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, старыС вСрсии Oracle ΠΈΠ»ΠΈ спСцифичСскиС настройки PostgreSQL) ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈΠΌΠΈΡ‚Ρ‹ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях массив Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° части ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
JOIN Π² ΠΎΠ΄Π½ΠΎΠΌ запросС
ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…
Пока Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ, всё Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚

Π—Π°ΠΌΠ΅Π½Π° Ρ†ΠΈΠΊΠ»Π° Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ-массивом

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ β€” ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ нСпосрСдствСнно Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ массивы ссылок, строк ΠΈ чисСл. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΊΠ»Π΅ΠΈΠ²Π°Ρ‚ΡŒ строки запроса ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС конструкции.

Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ список Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ свободных остатков. ВмСсто Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π΅ создайтС ΠΎΠ΄ΠΈΠ½ запрос, Π³Π΄Π΅ Π² условии ΠΎΡ‚Π±ΠΎΡ€Π° ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° Массив. БистСма сама подставит всС значСния Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно эффСктивСн, ΠΊΠΎΠ³Π΄Π° количСство элСмСнтов для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч. Код становится Ρ‡ΠΈΡ‰Π΅, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅ ΠΈ выполняСтся ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с цикличСским Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹.НомСнклатура,

| ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΡΡ‚Π°Ρ‚ΠΎΠΊ

|Π˜Π—

| РСгистрНакоплСния.ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹.ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ(, , , НомСнклатура Π’ (&БписокНомСнклатуры)) КАК ΠžΡΡ‚Π°Ρ‚ΠΊΠΈΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("БписокНомСнклатуры", ΠœΠ°ΡΡΠΈΠ²Π‘ΡΡ‹Π»ΠΎΠΊ);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

ИспользованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°-массива Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ условиС Π±ΡƒΠ΄Π΅Ρ‚ сформировано ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Однако, Ссли список слишком Π²Π΅Π»ΠΈΠΊ, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π΄Π°Π»Π΅Π΅.

πŸ’‘

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

ИспользованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† для слоТных Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

Когда Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ становится слоТнСС простого пСрСчислСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° объСм Π΄Π°Π½Π½Ρ‹Ρ… исчисляСтся дСсятками тысяч строк, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ большой объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Π½Π°Π±ΠΎΡ€ для соСдинСний (JOIN) ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² 1Π‘ состоит ΠΈΠ· Π΄Π²ΡƒΡ… этапов. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ исходныС Π΄Π°Π½Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ запроса) Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с прСфиксом #. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² основном запросС ΠΊΠ°ΠΊ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ соСдинСниС (JOIN) ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈ основными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ выполняСтся Π½Π° сторонС Π‘Π£Π‘Π” с использованиСм всСх доступных индСксов. Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π² ΠΊΠΎΠ΄Π΅ 1Π‘.

ΠœΠ΅Ρ‚ΠΎΠ΄ ОбъСм Π΄Π°Π½Π½Ρ‹Ρ… Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Π¦ΠΈΠΊΠ» с запросом Π”ΠΎ 100 записСй Низкая ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ низкая
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив Π”ΠΎ 2000 записСй Низкая Высокая
Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π›ΡŽΠ±ΠΎΠΉ объСм БрСдняя Максимальная
ОбъСдинСниС запросов Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ объСм Высокая Высокая

ΠŸΡ€ΠΈ создании Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ структуру ΠΏΠΎΠ»Π΅ΠΉ. Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ соСдинСниС ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ полю, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ присутствуСт Π² Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ совмСстимый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

β˜‘οΈ Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

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

ОбъСдинСниС запросов Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ВЫБРАВЬ

Иногда ситуация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ получСния Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ физичСски находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΈΠ»ΠΈ рСгистрах, Π½ΠΎ логичСски Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ вмСстС. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях вмСсто Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ списку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ВЫБРАВЬ.. Π˜Π—.. ΠžΠ‘ΠͺΠ•Π”Π˜ΠΠ˜Π’Π¬ Π’Π‘Π• ВЫБРАВЬ...

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π±ΠΎΡ€Π°, содСрТащий строки ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников. НапримСр, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ связанных с Π½ΠΈΠΌΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²Π° подзапроса ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

ИспользованиС объСдинСния позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ Π»ΠΈΡˆΠ½ΠΈΡ… соСдинСний. Однако слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ структура ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡ‹Ρ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠΉ (количСство, порядок ΠΈ Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ»Π΅ΠΉ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ syntax:

Запрос.ВСкст = 

"ВЫБРАВЬ

| 'РСализация' КАК Π’ΠΈΠΏΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°,

| РСализация.Бсылка,

| РСализация.Π”Π°Ρ‚Π°

|Π˜Π—

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

|Π“Π”Π•

| РСализация.ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ = ИБВИНА

|

|ΠžΠ‘ΠͺΠ•Π”Π˜ΠΠ˜Π’Π¬ Π’Π‘Π•

|

|ВЫБРАВЬ

| 'Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°',

| Π—Π°ΠΊΠ°Π·.Бсылка,

| Π—Π°ΠΊΠ°Π·.Π”Π°Ρ‚Π°

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° КАК Π—Π°ΠΊΠ°Π·";

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠžΠ‘ΠͺΠ•Π”Π˜ΠΠ˜Π’Π¬ Π’Π‘Π• Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ просто ΠžΠ‘ΠͺΠ•Π”Π˜ΠΠ˜Π’Π¬, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ удалСния Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² строк. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях всСгда добавляйтС слово Π’Π‘Π•.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ рСгистры свСдСний

ΠžΡΠΎΠ±ΡƒΡŽ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ слСдуСт ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с рСгистрами свСдСний ΠΈ пСриодичСскими рСгистрами. Частой ошибкой являСтся Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»: внСшний Ρ†ΠΈΠΊΠ» ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ β€” ΠΏΠΎ элСмСнтам справочника ΠΈΠ»ΠΈ записям рСгистра для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

ВмСсто этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вынСсти Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ справочной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· рСгистра свСдСний Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ выполняйтС поиск ΠΏΠΎ этой локальной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² памяти. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ поиска Π² памяти (ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° порядки быстрСС запросов ΠΊ Π‘Π£Π‘Π”.

Если Π΄Π°Π½Π½Ρ‹Π΅ Π² рСгистрС свСдСний ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»Π΅ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΆΠΈΠ·Π½ΠΈ сСссии. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запускС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Для пСриодичСских рСгистров ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ срСз послСдних ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… записСй Π² ΠΎΠ΄Π½ΠΎΠΌ запросС с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ рСгистратору ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡŽ. НС Π΄Π΅Π»Π°ΠΉΡ‚Π΅ срСз Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°!

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

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

Диагностика ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ избавились ΠΎΡ‚ запросов Π² Ρ†ΠΈΠΊΠ»Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС инструмСнты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Консоль запросов ΠΈ тСхнологичСский ΠΆΡƒΡ€Π½Π°Π» (Π’Π–) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ выполнСния ΠΊΠΎΠ΄Π°.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Анализируя Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ Π’Π–, ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹: Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сотни запросов с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ тСкстом, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСниями ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΌΠ°Π»Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ β€” это Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наличия Ρ†ΠΈΠΊΠ»Π°.

Π’Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€ ΠΊΠΎΠ΄Π°. Он ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ «горячиС Ρ‚ΠΎΡ‡ΠΊΠΈΒ» β€” участки ΠΊΠΎΠ΄Π°, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ большС всСго процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Часто оказываСтся, Ρ‡Ρ‚ΠΎ 90% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тратится Π½Π΅ Π½Π° вычислСния, Π° Π½Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ Π‘Π£Π‘Π” ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… запросов.

РСгулярный Π°ΡƒΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½Π΅ΡˆΠ½ΠΈΡ… инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Chameleon ΠΈΠ»ΠΈ встроСнного Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Π² EDT, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΄ΠΎ попадания ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΡƒΡŽ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ.

πŸ’‘

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ успСха ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ β€” сокращСниС количСства ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π‘Π£Π‘Π”. Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий: ΠΎΠ΄ΠΈΠ½ запрос Π½Π° ΠΎΠ΄Π½Ρƒ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, нСзависимо ΠΎΡ‚ объСма ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запрос Π² Ρ†ΠΈΠΊΠ»Π΅, Ссли записСй всСго 5-10?

ВСхничСски это допустимо ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΌΡƒ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Однако с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ стандартов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ это считаСтся ΠΏΠ»ΠΎΡ…ΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ (bad practice). Код становится ΠΌΠ΅Π½Π΅Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ: Ссли Π·Π°Π²Ρ‚Ρ€Π° количСство записСй вырастСт Π΄ΠΎ 100, систСма Π½Π°Ρ‡Π½Π΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ. Π›ΡƒΡ‡ΡˆΠ΅ сразу ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Какая Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈ Π’Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ языка 1Π‘, хранящийся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти процСсса ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π° (с прСфиксом #) β€” это физичСская Ρ‚Π°Π±Π»ΠΈΡ†Π°, создаваСмая Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ пространствС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (tempdb Π² MSSQL, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ запросами ΠΈ участия Π² JOIN Π½Π° сторонС Π‘Π£Π‘Π”.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ запрос с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ-массивом Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС?

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

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ структуру Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса?

ΠΠ°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса нСльзя. НСобходимо ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ»ΠΈ значСния структуры Π² Π’Π°Π±Π»ΠΈΡ†Ρƒ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив, Ссли структура простая. Для слоТных случаСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сСриализация Π² строку (XML/JSON), Π½ΠΎ это ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ВлияСт Π»ΠΈ Ρ‚ΠΈΠΏ Π‘Π£Π‘Π” Π½Π° Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ?

Π”Π°, влияСт. НапримСр, Π² PostgreSQL Π΅ΡΡ‚ΡŒ ограничСния Π½Π° количСство элСмСнтов Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ IN (хотя ΠΎΠ½ΠΈ достаточно Π²Π΅Π»ΠΈΠΊΠΈ), Π° Π² MSSQL Π΅ΡΡ‚ΡŒ ограничСния Π½Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ влоТСнности. Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π½Π° всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π‘Π£Π‘Π” для 1Π‘.