ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ слоТных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ записи ΠΏΠΎ списку Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса Π·Π°Ρ‚ΠΎΡ‡Π΅Π½ ΠΏΠΎΠ΄ скалярныС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹: ΠΎΠ΄Π½ΠΎ число, ΠΎΠ΄Π½Π° Π΄Π°Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠ΄Π½Π° ссылка. Однако бизнСс-Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π΄ΠΊΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ ΡΡ‚ΠΎΠ»ΡŒ простыми, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ приходится ΠΈΡΠΊΠ°Ρ‚ΡŒ способы ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив ΠΈΠ»ΠΈ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΡŒ конструкции "ВЫБРАВЬ".

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

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

ИспользованиС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² конструкторС

Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… β€” это использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π’ Π² сочСтании с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ синтаксисС языка запросов 1Π‘ это выглядит ΠΊΠ°ΠΊ пСрСчислСниС элСмСнтов Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски подставляСт значСния, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Массив ΠΈΠ»ΠΈ БписокЗначСний.

ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ тСкста запроса Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· конструктор, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ нСпосрСдствСнно Π² условии. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ запросов распознаСт структуру ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅Ρ‚ Π΅Π³ΠΎ Π² список констант. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эффСктивно для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ списку ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹.

ВЫБРАВЬ

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура.Бсылка

Π˜Π—

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура

Π“Π”Π•

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура.Бсылка Π’ (&ΠœΠ°ΡΡΠΈΠ²Π‘ΡΡ‹Π»ΠΎΠΊ)

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ лаконичности. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (тысячи элСмСнтов) тСкст запроса ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ограничСниям со стороны Π‘Π£Π‘Π” ΠΈΠ»ΠΈ самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

πŸ’‘

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

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† для слоТных Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

Когда объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΠΊ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ услоТняСтся, использованиС простых массивов становится нСэффСктивным. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся созданиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт вынСсти список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π•.

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

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

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ описываСм структуру Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ наши ΠΊΠ»ΡŽΡ‡ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π² Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² запросС.

Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€ = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;

Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Бсылка", ВипОписанияВипов("БправочникБсылка.НомСнклатура"));

// Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ...

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

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

"ВЫБРАВЬ

| НомСнклатура.Бсылка

|Π˜Π—

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура

| Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• &Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€ КАК Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€

| ПО НомСнклатура.Бсылка = Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€.Бсылка

|Π“Π”Π•

| Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€.Бсылка Π•Π‘Π’Π¬ НЕ NULL";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€", Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€);

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ сСссии выполнСния ΠΊΠΎΠ΄Π°. НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ»ΠΈ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ модуля, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ утСряны.

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со списками Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ БписокЗначСний Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса, систСма автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² Π½Π°Π±ΠΎΡ€ констант, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ массиву. Но Ссли список пуст, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ запроса ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ нСпрСдсказуСмым. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ пустой список Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π’ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ "Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всё" ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠŸΡ€ΡΠΌΠ°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массива
ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π°
ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк
Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² рСгистрС свСдСний

Для избСТания ошибок рСкомСндуСтся всСгда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ список Π½Π° пустоту ΠΏΠ΅Ρ€Π΅Π΄ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ запроса. Если список пуст, Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запрос ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π»ΠΎΠΆΠ½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 = 0), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… лишними Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ.

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

ДинамичСскоС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста запроса

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив Высокая Высокая Низкая
ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ Высокая БрСдняя
ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк Низкая (ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…) БрСдняя Высокая

ΠŸΡ€ΠΈ использовании ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹. Бсылки ΠΈ строки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π΄Π°Ρ‚Ρ‹ β€” Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹. Ошибка Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ синтаксичСской ошибкС всСго запроса.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, динамичСскоС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ затрудняСт использованиС кэша ΠΏΠ»Π°Π½ΠΎΠ² запросов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ тСкст запроса, Ρ‡Ρ‚ΠΎ заставляСт сСрвСр 1Π‘ ΠΈ Π‘Π£Π‘Π” Π·Π°Π½ΠΎΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ выполнСния. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы ΠΏΡ€ΠΈ высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ стоит Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ?

Частая пСрСкомпиляция запросов потрСбляСт рСсурсы процСссора сСрвСра 1Π‘. ΠŸΡ€ΠΈ большом количСствС ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ очСрСдям ΠΈ замСдлСнию Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ‹.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пустых массивов ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи

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

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ (&ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€) ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ пустой массив, логичСски запрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ноль строк, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ пустому мноТСству. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ случаи, ΠΊΠΎΠ³Π΄Π° игнорируСтся условиС Π“Π”Π•, ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ всС записи.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° нСявноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ пустых ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ВсСгда явно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ запроса.

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ…

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

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

// Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

ОписаниСПолСй = Новый ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΠΎΠ»Π΅ΠΉΠ’Π°Π±Π»ΠΈΡ†Ρ‹;

ОписаниСПолСй.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Бсылка");

Π’Π’_Π€ΠΈΠ»ΡŒΡ‚Ρ€.Π˜Π½Π΄Π΅ΠΊΡΡ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ОписаниСПолСй);

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠΌ являСтся использованиС Ρ€Π΅ΠΆΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ управляСмых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ записСй, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° врСмя удСрТания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния запроса Π·Π° счСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… сниТаСт риск ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

πŸ’‘

Для Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ Π±ΠΎΠ»Π΅Π΅ 1000 элСмСнтов использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† с индСксами являСтся стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для обСспСчСния ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы 1Π‘.

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

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

МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса?

НСт, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ нСльзя. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ плоскиС структуры: скалярныС значСния, ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈΠ»ΠΈ списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ слоТных структур Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли запрос с массивом выполняСтся ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ?

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

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ пустой массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ запрос Π²Π΅Ρ€Π½ΡƒΠ» пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

Π›ΡƒΡ‡ΡˆΠ΅ всСго явно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ массив Π½Π° пустоту Π² ΠΊΠΎΠ΄Π΅. Если ΠΎΠ½ пуст, Π½Π΅ выполняйтС запрос Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² условиС Π“Π”Π• Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π»ΠΎΠΆΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 = 0, вмСсто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ пустого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° количСство элСмСнтов Π² массивС для запроса?

ЖСсткого ограничСния Π² самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘ Π½Π΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ ограничСния Π‘Π£Π‘Π” Π½Π° Π΄Π»ΠΈΠ½Ρƒ тСкста запроса ΠΈ количСство элСмСнтов Π² спискС IN. ΠŸΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ нСсколько тысяч элСмСнтов) запрос ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ошибкой.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив структур Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ запроса?

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