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

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

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ

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

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

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прямого обращСния ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π³Π΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½, ΠΊΠΎΠ³Π΄Π° структура Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ строго фиксирована ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…:

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

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("НомСнклатура");

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π—.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НомСнклатура = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€ А");

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 10;

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° = Π’Π—[0].ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ;

Однако слСпоС использованиС индСксов [0] Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ количСства строк являСтся распространСнной ошибкой. Если Ρ‚Π°Π±Π»ΠΈΡ†Π° окаТСтся пустой Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния, ΠΊΠΎΠ΄ прСрвСтся с ошибкой выполнСния. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΏΠΎ индСксу строки Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†. ΠŸΡ€ΠΈ частом поискС Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивах (тысячи строк) Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· индСксы ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΌΡƒ росту Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

πŸ’‘

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

ΠœΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

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

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

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

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠŸΠΎΠΈΡΠΊΠ° = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠŸΠΎΠΈΡΠΊΠ°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Артикул", "A-12345");

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠŸΠΎΠΈΡΠΊΠ°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π‘ΠΊΠ»Π°Π΄", Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.Π‘ΠΊΠ»Π°Π΄Ρ‹.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Основной"));

НайдСнныСБтроки = Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.НайтиБтроки(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠŸΠΎΠΈΡΠΊΠ°);

Если НайдСнныСБтроки.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

НуТнаяБтрока = НайдСнныСБтроки[0];

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ = НуТнаяБтрока.ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

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

β˜‘οΈ ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ поиск Π² Π’Π°Π±Π»ΠΈΡ†Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

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

Когда условия поиска становятся слоТнСС простого равСнства, Π½Π° сцСну Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠžΡ‚Π±ΠΎΡ€. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, встроСнный нСпосрСдствСнно Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния: большС, мСньшС, LIKE, Π² спискС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ НайтиБтроки, ΠΎΡ‚Π±ΠΎΡ€ измСняСт состояниС видимости строк для ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

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

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

  • πŸ” ΠžΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌΡΡ ΠΊ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ "ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ" Ρ‡Π΅Ρ€Π΅Π· свойство Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • πŸ“‰ УстанавливаСм условиС сравнСния Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0.
  • πŸ”„ ЗапускаСм Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски пропустит Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ остатки.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПослС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π±ΠΎΡ€ΠΎΠΌ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‚Π±ΠΎΡ€.Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ(), Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π»Π΅Π΅ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ объСмС. Π˜Π½Π°Ρ‡Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ всС Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ логичСским ошибкам Π² расчСтах.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² чтСния

Π’Ρ‹Π±ΠΎΡ€ способа получСния значСния ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° врСмя выполнСния ΠΊΠΎΠ΄Π°, особСнно Π² высоконагруТСнных систСмах. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π·Π°Π΄Π°ΡŽΡ‚ΡΡ вопросом: Ρ‡Ρ‚ΠΎ быстрСС, Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ»ΠΈ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ поиска? ΠžΡ‚Π²Π΅Ρ‚ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ частоты обращСния ΠΊ Π½Π΅ΠΌΡƒ.

Для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† (Π΄ΠΎ 100-200 строк) Ρ€Π°Π·Π½ΠΈΡ†Π° Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ практичСски Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Однако ΠΏΡ€ΠΈ ростС объСма Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ тысяч ΠΈ дСсятков тысяч строк алгоритмичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ становится критичСским Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск O(n) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ сравнСниС основных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΈΡ… эффСктивности ΠΈ области примСнСния:

ΠœΠ΅Ρ‚ΠΎΠ΄ доступа Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π›ΡƒΡ‡ΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ
ΠŸΡ€ΡΠΌΠΎΠΉ индСкс [i] O(1) Π§Ρ‚Π΅Π½ΠΈΠ΅ фиксированной строки Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ знания Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°
НайтиБтроки O(n) Поиск ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ полям Волько Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС
ΠžΡ‚Π±ΠΎΡ€ + Π¦ΠΈΠΊΠ» O(n) БлоТная Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠœΠ΅Π½ΡΠ΅Ρ‚ состояниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ O(log n) ΠœΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ поиск Π² большой Π’Π— Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки

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

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс Π² Π’Π°Π±Π»ΠΈΡ†Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

Для создания индСкса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ˜Π½Π΄Π΅ΠΊΡ(ИмяИндСкса, ИмСнаКолонок). ПослС этого ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ НайтиБтроки систСма автоматичСски Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ индСксом, Ссли поля Π² структурС поиска ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с полями индСкса.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций

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

НаиболСС частая ошибка β€” ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойству ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ спСцсимволы, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏ значСния Π½Π΅ соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки для доступа: Π‘Ρ‚Ρ€ΠΎΠΊΠ°["Имя Колонки"]. Π­Ρ‚ΠΎΡ‚ синтаксис Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΎΠΊ ΠΈ бСзопасСн.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, стоит ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Null (НСопрСдСлСно), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ слоТСнии с числом ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈΠ»ΠΈ ΡΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° ВипЗначСния для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

  • βœ… ВсСгда провСряйтС Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 ΠΏΠ΅Ρ€Π΅Π΄ доступом ΠΊ Π’Π—[0].
  • βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°..Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для критичСских участков чтСния Π΄Π°Π½Π½Ρ‹Ρ….
  • βœ… Π’Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· Π’Π—.Колонки.Найти("Имя") ΠΏΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ»Ρ‡Π°Π»ΠΈΠ²ΠΎΠ΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚ сформируСтся с Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ с понятным сообщСниСм, Ρ‡Π΅ΠΌ Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π»ΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

πŸ’‘

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

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: Запросы ΠΊ Π’Π°Π±Π»ΠΈΡ†Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ возмоТности для использования Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (БУММА, БРЕДНЕЕ, МИНИМУМ), Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΏΠΎ нСскольким полям ΠΈ соСдинСний с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ источниками Π΄Π°Π½Π½Ρ‹Ρ…. Π₯отя этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС рСсурсов Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ, ΠΎΠ½ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ для слоТных Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИспользованиС запросов ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ слоТных условиях Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ. Для простого получСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ overhead (Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы) Π½Π° созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° запроса прСвысит Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ использования SQL-синтаксиса.

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

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
НайтиБтроки
ΠžΡ‚Π±ΠΎΡ€
Π¦ΠΈΠΊΠ» с Если
Запрос ΠΊ Π’Π—
Π§Π΅ΠΌ отличаСтся Π’Π— ΠΎΡ‚ РСгистра НакоплСния?

Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ хранится Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти процСсса ΠΈ исчСзаСт послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сСанса, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ РСгистр НакоплСния сохраняСт Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… SQL, обСспСчивая постоянство ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ постинга.

МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ послС создания Π’Π—?

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

Как Π½Π°ΠΉΡ‚ΠΈ строку, Ссли ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½?

ΠœΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки Π²Π΅Ρ€Π½Π΅Ρ‚ массив всСх подходящих строк. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ этот массив Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ запись ΠΏΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌ ΠΈΠ»ΠΈ Π²Π·ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ/послСднюю Π² зависимости ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠΈ.

Π§Ρ‚ΠΎ быстрСС: Π’Π— ΠΈΠ»ΠΈ Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

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