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

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

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

ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΊ строкС ΠΏΠΎ числовому индСксу

Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ β€” это ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ строки. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Ρ‚ΠΈΠΏΠ° Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π’Π°Π±Π»ΠΈΡ†Π°Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° строки Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ с нуля. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрвая запись ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0, вторая β€” 1 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Для получСния строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ().

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ бСзопасного получСния строки. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ провСряСм свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ(), ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ обращаСмся ΠΊ элСмСнту. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ ΡƒΠΏΠ°Π΄Π΅Ρ‚ с ошибкой "ИндСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°".

Если Π’Π°Π±Π»ΠΈΡ†Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π°Π±Π»ΠΈΡ†Π°.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(0);

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π‘ΡƒΠΌΠΌΠ°;

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

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ строки. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ измСнСния, внСсСнныС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π‘Ρ‚Ρ€ΠΎΠΊΠ°, сразу ΠΆΠ΅ отразятся Π² самой Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ отличаСтся ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ коллСкциями, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ копия значСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ТСстко Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ числа (магичСскиС числа) Π² качСствС индСксов Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-ΠΊΠΎΠ΄Π΅. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΈ ваш ΠΊΠΎΠ΄ сломаСтся.

Поиск строки ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ

Часто доступ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ строки Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ порядок записСй ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ строку ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² Ρ€ΠΎΠ»ΠΈ ΠΊΠ»ΡŽΡ‡Π°. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ Найти() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³Π°ΡƒΠΌΠ΅Π½Ρ‚Π°: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° ΠΈ имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (ΠΈΠ»ΠΈ структуру ΠΊΠ»ΡŽΡ‡Π΅ΠΉ). Если строка Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° Π½Π΅Ρ‘. Если Π½Π΅Ρ‚ β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно.

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

  • πŸ” ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΈΡ‰Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС значСния.
  • πŸ” Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ НСопрСдСлСно, Ссли совпадСний Π½Π΅Ρ‚.
  • πŸ” РСгистрозависим для строк, Ссли Π½Π΅ настроСно ΠΈΠ½ΠΎΠ΅.
  • πŸ” Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π½Π° индСксированных полях запросов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° дСмонстрируСт, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎ Π΅Π³ΠΎ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Ρƒ. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Ρ‚ΠΈΠΊΡƒΠ»Π° ΠΈ имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ "Артикул". Если Ρ‚ΠΎΠ²Π°Ρ€ Π½Π°ΠΉΠ΄Π΅Π½, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ количСство.

Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΎΠ²Π°Ρ€Π° = Π’Π°Π±Π»ΠΈΡ†Π°Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Найти("ART-12345", "Артикул");

Если Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΎΠ²Π°Ρ€Π° <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΎΠ²Π°Ρ€Π°.Π¦Π΅Π½Π° = 1500;

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… искомого значСния строго соотвСтствуСт Ρ‚ΠΈΠΏΡƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½Π°ΠΉΡ‚ΠΈ Ρ‡ΠΈΡΠ»ΠΎΠ²ΡƒΡŽ строку ΠΏΠΎ строковому ΠΊΠ»ΡŽΡ‡Ρƒ Π±Π΅Π· привСдСния Ρ‚ΠΈΠΏΠΎΠ² Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅ΠΉ.
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ индСксу
Найти ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ
Π§Π΅Ρ€Π΅Π· запрос с условиСм
Π€ΠΈΠ»ΡŒΡ‚Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° составных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ структур поиска

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

Π’Ρ‹ создаСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° значСниями β€” искомыС Π΄Π°Π½Π½Ρ‹Π΅. БистСма сопоставит всС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ строку, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΡƒΡŽ всСм условиям ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании структуры поиска всС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΉ поля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС выполнСния.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиска строки ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ: Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π΅ ΠΈ складу. Π­Ρ‚ΠΎ типичная Π·Π°Π΄Π°Ρ‡Π° для ΡƒΡ‡Π΅Ρ‚Π° остатков.

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

ΠšΠ»ΡŽΡ‡ΠŸΠΎΠΈΡΠΊΠ°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("НомСнклатура", БсылкаНаВовар);

ΠšΠ»ΡŽΡ‡ΠŸΠΎΠΈΡΠΊΠ°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π‘ΠΊΠ»Π°Π΄", ОсновнойБклад);

Π‘Ρ‚Ρ€ΠΎΠΊΠ°ΠžΡΡ‚Π°Ρ‚ΠΊΠ° = Π’Π°Π±Π»ΠΈΡ†Π°ΠžΡΡ‚Π°Ρ‚ΠΊΠΎΠ².Найти(ΠšΠ»ΡŽΡ‡ΠŸΠΎΠΈΡΠΊΠ°);

πŸ’‘

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

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа

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

ΠŸΡ€ΡΠΌΠΎΠΉ доступ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс) являСтся самым быстрым, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это опСрация O(1). Доступ ΠΊ памяти происходит ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. Поиск Ρ‡Π΅Ρ€Π΅Π· Найти() ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(N), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° строк Π΄ΠΎ нахоТдСния совпадСния. На Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π² 10-20 строк Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π°, Π½ΠΎ Π½Π° тысячах записСй ΠΎΠ½Π° становится ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΉ.

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

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс) Высокая Низкая (риск Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹) Низкая
Найти(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) БрСдняя Высокая (Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлСно) БрСдняя
Найти(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°) БрСдняя/Низкая Высокая Высокая
Π€ΠΈΠ»ΡŒΡ‚Ρ€ + ΠŸΠ΅Ρ€Π²Π°Ρ Низкая Высокая Высокая
πŸ’‘

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

Π Π°Π±ΠΎΡ‚Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ запросов ΠΈ индСксация

Когда Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π’Π°Π±Π»ΠΈΡ†Π°Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ послС выполнСния запроса, Ρƒ вас появляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт β€” индСксы. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π’Π°Π±Π»ΠΈΡ†Ρ‹Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ физичСскиС индСксы, построСнныС ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ.

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

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

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ˜Π½Π΄Π΅ΠΊΡ("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚");

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Найти(Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚, "ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚");

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ созданиС индСкса Ρ‚ΠΎΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя. Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всСго ΠΎΠ΄ΠΈΠ½ поиск ΠΏΠΎ большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π²Ρ‹Π³ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ. Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Ρ‹ ΠΏΡ€ΠΈ мноТСствСнных обращСниях ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС.

Π§Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с индСксом?

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

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками. Бамая распространСнная β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² строку, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ запроса Π±Π΅Π· Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ… Π½Π΅ позволяСт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π² строках Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса Π½Π° сторонС сСрвСра Π‘Π” Π±Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ².

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° частая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° НСопрСдСлСно. Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСпо Π²Π΅Ρ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ строка Π½Π°ΠΉΠ΄Π΅Π½Π°, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС "ΠžΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ использованиС значСния НСопрСдСлСно" ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ строки.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ‚ΠΈΠΏΠΎΠ². Если Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ хранится число, Π° Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ строку "100", поиск Π½Π΅ сработаСт. Π―Π²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ поиском ΠΈΠ»ΠΈ записью ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

  • βœ… ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Найти().
  • βœ… Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° соотвСтствиСм Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π° ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.
  • βœ… НС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ строки Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ запроса Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.
  • βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ массовом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ строк.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ просмотр Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π΅ пуста Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ обращСния. ΠŸΡƒΡΡ‚Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° β€” частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° сбоСв Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ успСли Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 8.2 ΠΏΡ€ΠΎΡ‚ΠΈΠ² 8.3). ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ строкС

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4
МоТно Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(0)?

Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ строки Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π›ΡŽΠ±Ρ‹Π΅ измСнСния Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² этой строки сразу ΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² исходной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти, Ссли строк с Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΌ нСсколько?

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ ссылку Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ строку, которая удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ поиска. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ строк Π² этом случаС зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ отсортированы.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ строку ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹?

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ нашли строку Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Найти(), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ссылку Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ() Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π’Π°Π±Π»ΠΈΡ†Π°.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°).

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π’Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π’Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°?

Π’Π°Π±Π»ΠΈΡ†Π° Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π’Π°Π±Π»ΠΈΡ†Π° Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° β€” это нСизмСняСмый (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв) Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ запросом ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….