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

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

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

БинтаксичСскиС особСнности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ списков

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

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

Рассмотрим Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π’ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ-массивом. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ список ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² тСкст запроса:

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

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

"ВЫБРАВЬ

| РСализацияВоваровУслуг.Бсылка КАК Бсылка,

| РСализацияВоваровУслуг.НомСр КАК НомСр

|Π˜Π—

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

|Π“Π”Π•

| РСализацияВоваровУслуг.Бсылка Π’(&БписокБсылок)";

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

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

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

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

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

ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π’ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ записСй ΠΏΠΎ списку Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Он позволяСт ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ эквивалСнтно мноТСству условий Π˜Π›Π˜, соСдинСнных ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ запрос, прСобразуя Π΅Π³ΠΎ Π² эффСктивный ΠΏΠ»Π°Π½ выполнСния Π½Π° сторонС Π‘Π£Π‘Π”.

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

Випизация ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. Если ΠΏΠΎΠ»Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… составного Ρ‚ΠΈΠΏΠ°, Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ массив, содСрТащий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², запрос выполнится, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ записи. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ссылки.

  • πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ для списков Π΄ΠΎ 500 элСмСнтов для максимальной скорости.
  • πŸ“Œ Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° соотвСтствиСм Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ поля Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • πŸ“Œ ИзбСга ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ пустых массивов, провСряйтС Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() ΠΏΠ΅Ρ€Π΅Π΄ запросом.

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

πŸ’‘

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

Π Π°Π±ΠΎΡ‚Π° с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов

Когда объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ для прямого использования Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ становится использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² памяти сСрвСра 1Π‘, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² запросС ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

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

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

Π’Π°Π±Π—Π½Π°Ρ‡.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Бсылка", ВипОписанияВипов("Бсылка.Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚"));

// ЗаполняСм Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

Для КаТдого Π­Π» Из ΠœΠ°ΡΡΠΈΠ²Π‘ΡΡ‹Π»ΠΎΠΊ Π¦ΠΈΠΊΠ»

НоваяБтрока = Π’Π°Π±Π—Π½Π°Ρ‡.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.Бсылка = Π­Π»;

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

// Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

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

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

"ΠŸΠžΠœΠ•Π‘Π’Π˜Π’Π¬ Π’Π’_Бписок

|Π˜Π— &Π’Π°Π±Π»ΠΈΡ†Π°ΠšΠ°ΠΊΠ˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ КАК Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

|;

|

|ВЫБРАВЬ

| Π”ΠΎΠΊ.Бсылка

|Π˜Π—

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

| ВНУВРЕННЕЕ Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• Π’Π’_Бписок КАК Бписок

| ПО Π”ΠΎΠΊ.Бсылка = Бписок.Бсылка";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π’Π°Π±Π»ΠΈΡ†Π°ΠšΠ°ΠΊΠ˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ", Π’Π°Π±Π—Π½Π°Ρ‡);

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

ИспользованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром, выполняя ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π½Π° сторонС сСрвСра 1Π‘ ΠΈΠ»ΠΈ Π‘Π£Π‘Π”.

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

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

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ ОбъСм Π΄Π°Π½Π½Ρ‹Ρ… (элСмСнтов) Нагрузка Π½Π° ΡΠ΅Ρ‚ΡŒ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив Π”ΠΎ 500 Низкая Высокая
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив Π‘ΠΎΠ»Π΅Π΅ 1000 Высокая БрСдняя/Низкая
ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π° Π›ΡŽΠ±ΠΎΠΉ объСм БрСдняя Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ высокая
Π¦ΠΈΠΊΠ» запросов Π›ΡŽΠ±ΠΎΠΉ объСм ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠžΡ‡Π΅Π½ΡŒ низкая

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

πŸ’‘

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: для списков ΠΌΠ΅Π½Π΅Π΅ 500 элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-массив, для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° составных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ссылочных Π΄Π°Π½Π½Ρ‹Ρ…

Одной ΠΈΠ· самых частых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Π² запросах 1Π‘ являСтся нСсоотвСтствиС Ρ‚ΠΈΠΏΠΎΠ². Поля Π² рСгистрах ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… часто ΠΈΠΌΠ΅ΡŽΡ‚ составной Ρ‚ΠΈΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Бсылка Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Если ваш массив содСрТит строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ссылки, Π° ΠΏΠΎΠ»Π΅ Π² Π±Π°Π·Π΅ допускаСт нСсколько Ρ‚ΠΈΠΏΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ слоТности с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π•Π‘Π’Π¬NULL ΠΈΠ»ΠΈ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² тСкстС запроса. Однако Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ способом являСтся Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массива с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ использованиС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°ΡΠ‘ΡΡ‹Π»ΠΊΠ°, Ссли Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° прилоТСния это позволяСт.

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

  • πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ свойство ВипЗначСния Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.
  • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ВипОписанияВипов для создания Π³ΠΈΠ±ΠΊΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ.
  • πŸ” Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ смСшСния Ρ€Π°Π·Π½Ρ‹Ρ… сущностСй Π² ΠΎΠ΄Π½ΠΎΠΌ массивС Π±Π΅Π· явной нСобходимости.

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

Π‘Π΅ΠΊΡ€Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ссылками

Если Π²Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉΠ‘ΡΡ‹Π»ΠΊΠΈ, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ массива Π² запрос ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² массивС Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этого Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ссылки Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΈΠ½Π°Ρ‡Π΅ соСдинСниС Π½Π΅ сработаСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ способы ΠΈΡ… устранСния

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ряд стандартных ошибок ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ массиву. Бамая распространСнная ΠΈΠ· Π½ΠΈΡ… β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ запроса. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²ΠΈΠ΄Π° "НСвСрный Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°", Ρ‡Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ лСчится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅Π΄ установкой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Другая частая ошибка связана с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ВрСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π°, созданная Π² ΠΎΠ΄Π½ΠΎΠΌ запросС, Π½Π΅ Π²ΠΈΠ΄Π½Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Ссли ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСзависимо. НСобходимо Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ запросы Π² ΠΎΠ΄ΠΈΠ½ тСкст с раздСлитСлями ;, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ запрос.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅ тСкст запроса ΠΏΡƒΡ‚Π΅ΠΌ простого добавлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² строку Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ для SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ ΠΈ Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΎΠ² запросов сСрвСром 1Π‘. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹!

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ слоТных запросов с массивами ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ консоль запросов ΠΈΠ»ΠΈ встроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ 1Π‘. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ сгСнСрированного SQL-тСкста (Ρ‡Π΅Ρ€Π΅Π· тСхнологичСский ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€) ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Π»Π° Π΄Π°Π½Π½Ρ‹Π΅ Π² Π‘Π£Π‘Π”.

β˜‘οΈ Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с запросом

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

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

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

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

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

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

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

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ с пустым массивом Π²Π΅Ρ€Π½Π΅Ρ‚ пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС записи ΠΏΡ€ΠΈ пустом Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΊΠΎΠ΄Π΅: Ссли массив пуст, Π½Π΅ добавляйтС условиС Π“Π”Π• ... Π’ (&ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€) Π² тСкст запроса Π²ΠΎΠΎΠ±Ρ‰Π΅, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ И (Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Π˜Π›Π˜ ПолС Π’ (&ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€)), хотя послСдний Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅Π½.

ВлияСт Π»ΠΈ Ρ‚ΠΈΠΏ Π‘Π£Π‘Π” Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами Π² 1Π‘?

Π”Π°, влияСт. Π Π°Π·Π½Ρ‹Π΅ Π‘Π£Π‘Π” (MS SQL, PostgreSQL, Oracle) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ограничСния Π½Π° количСство элСмСнтов Π² спискС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° IN ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ кроссплатформСнным ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ эффСктивно Π½Π° всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π‘Π£Π‘Π”.