Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ мноТСствСнным значСниям. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ списка Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста запроса Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ услоТняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам компиляции ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ². ИспользованиС массива Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° запроса являСтся соврСмСнным ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ стандартом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3 ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π±Ρ‹Π» сущСствСнно Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Запрос. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ бСзопасным, Π·Π°Ρ‰ΠΈΡ‚ΠΈΠ² Π΅Π³ΠΎ ΠΎΡ‚ ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ, ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π° счСт использования ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΎΠ² выполнСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ простыС списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ слоТныС структуры Π΄Π°Π½Π½Ρ‹Ρ….

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

Бинтаксис использования ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°-массива Π² тСкстС запроса

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² условии Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ (IN) Π² тСкстС запроса. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, содСрТащий массив, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ запроса ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. БинтаксичСски это выглядит ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π’.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ конструкции Π² тСкстС запроса:

ВЫБРАВЬ

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

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

Π˜Π—

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

Π“Π”Π•

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

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

πŸ’‘

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

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массива Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎ встроСнном языкС

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² запрос осущСствляСтся срСдствами встроСнного языка. НаиболСС распространСнным способом являСтся созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Массив ΠΈΠ»ΠΈ использованиС структуры БписокЗначСний. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, трСбуСтся Π»ΠΈ Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Ρ‹"Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅/ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅".

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с простыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΈΠ»ΠΈ Бсылка, достаточно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ массив. ЦикличСскоС Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива происходит стандартными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ добавлСния элСмСнтов. Π’Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚ΠΈΠΏΠ°ΠΌΠΈ элСмСнтов: ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ совмСстимы с Ρ‚ΠΈΠΏΠΎΠΌ поля Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‚Π±ΠΎΡ€.

  • πŸ“¦ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ Массив для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, списка ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
  • 🏷️ ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ БписокЗначСний, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π±ΠΎΡ€ ΠΏΠΎ нСскольким полям ΠΈΠ»ΠΈ Ссли трСбуСтся сохранСниС порядка слСдования элСмСнтов.
  • ⚑ Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½ΠΎ для списков Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч элСмСнтов массив ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ ΠΌΡ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ массив ссылок Π½Π° элСмСнты справочника:

ΠœΠ°ΡΡΠΈΠ²ΠžΡ‚Π±ΠΎΡ€Π° = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π˜Π·Π‘ΠΏΠΈΡΠΊΠ° Из БписокЭлСмСнтов Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²ΠžΡ‚Π±ΠΎΡ€Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π˜Π·Π‘ΠΏΠΈΡΠΊΠ°.Бсылка);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Запрос = Новый Запрос(ВСкстЗапроса);

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ΠœΠ°ΡΡΠΈΠ²Π‘ΡΡ‹Π»ΠΎΠΊ", ΠœΠ°ΡΡΠΈΠ²ΠžΡ‚Π±ΠΎΡ€Π°);

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ строго ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡƒ поля Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ строку Π² ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° Число Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния запроса.

Π Π°Π±ΠΎΡ‚Π° со слоТными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ структурой Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция Π•Π‘Π’Π¬ Π’ (EXISTS) ΠΈΠ»ΠΈ соСдинСниС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, прСдставлСнным ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Однако, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простой способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со слоТными условиями β€” это использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ· массива структур. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π’ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ массив структур, Ссли запрос ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ массива

ВСхничСски ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ТСсткого ограничСния Π½Π° количСство элСмСнтов Π² массивС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Однако, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ дСсятков тысяч элСмСнтов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° роста Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° сСрвСр Π‘Π£Π‘Π”.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Массив ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ массива Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ записью Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ являСтся частой Π΄ΠΈΠ»Π΅ΠΌΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ высоконагруТСнных систСм. ИспользованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°-массива ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ эффСктивности. ΠŸΡ€ΠΈ ΠΌΠ°Π»ΠΎΠΌ ΠΈ срСднСм количСствС элСмСнтов (Π΄ΠΎ 1000-2000 ΡˆΡ‚.) этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π·Π° счСт отсутствия Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° запись Π² Π‘Π”.

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

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ сравнСниС характСристик Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²:

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π°
ОбъСм Π΄Π°Π½Π½Ρ‹Ρ… Π”ΠΎ 2000 элСмСнтов Π‘ΠΎΠ»Π΅Π΅ 2000 элСмСнтов
НакладныС расходы ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ (ΠΏΠ°ΠΌΡΡ‚ΡŒ) ВысокиС (дисковая подсистСма/Π‘Π£Π‘Π”)
Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Высокая БрСдняя (трСбуСтся Π΄ΠΎΠΏ. ΠΊΠΎΠ΄)
План выполнСния Зависит ΠΎΡ‚ эвристики Π‘Π£Π‘Π” ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ статистикой
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚Π±ΠΎΡ€Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Волько массивы
Волько Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
Зависит ΠΎΡ‚ объСма Π΄Π°Π½Π½Ρ‹Ρ…
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ полнотСкстовый поиск

Для критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… участков ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ выполняСтся рСгулярная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, рСкомСндуСтся ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π—Π°ΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния запроса с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ-массивом ΠΈ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… даст Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ для вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ сСрвСра.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ пустых Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ

Одной ΠΈΠ· особСнностСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ-массивами являСтся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ пустой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, запрос Π²Π΅Ρ€Π½Π΅Ρ‚ пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π­Ρ‚ΠΎ свойство часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ программистами для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ"Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π΄ΡƒΡ€Π°ΠΊΠ°" ΠΈΠ»ΠΈ условного выполнСния Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° Π±Π΅Π· написания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Если.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° нСявноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ пустых массивах Π² критичСских ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…. Π―Π²Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ отсутствия элСмСнтов ΠΎΡ‚Π±ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° пустых Ρ„ΠΎΡ€ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки Ρ‚ΠΈΠΏΠΎΠ². Если Π² массив случайно ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Null (НСопрСдСлСно), это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ настроСк Π‘Π£Π‘Π” ΠΈ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. РСкомСндуСтся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π² запрос, удаляя Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ значСния.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ массива

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²"Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°" для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ². ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ΅ списка. РСализация Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ элСгантно. ΠœΡ‹ собираСм ссылки Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π² массив ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΈΡ… ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

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

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

πŸ’‘

ИспользованиС массива Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ запроса 1Π‘ 8.3 β€” это стандарт Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для ΠΎΡ‚Π±ΠΎΡ€ΠΎΠ² ΠΏΠΎ списку Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ удобством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ возмоТности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ постоянно Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ΡΡ. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° обновлСниями Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² 1Π‘ ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов рСгулярно ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ примСнимости Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² сторону большСй эффСктивности.

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

Π”Π°, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ 8.3 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ массива структур. Однако для ΠΈΡ… использования Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π’ структура Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅, Π»ΠΈΠ±ΠΎ запрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ спСцифичСски настроСн Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями. Π§Π°Ρ‰Π΅ массив структур ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для заполнСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСсовмСстимого Ρ‚ΠΈΠΏΠ°?

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

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

ЖСсткого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ограничСния Π½Π΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ практичСскиС Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π±ΠΎΠ»Π΅Π΅ 5000-10000 элСмСнтов рСкомСндуСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для избСТания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ сСтСвого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ компиляции запроса.

Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массива ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΎΠ²Ρ‹ΠΌ использованиСм?

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Запрос Π½Π΅ хранят состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ запусками. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΡƒΡ‚ΡΡ автоматичСски.