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

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ манипуляции ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΡ‹ рассмотрим ΠΊΠ°ΠΊ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ очистки, Ρ‚Π°ΠΊ ΠΈ тонкости Ρ€Π°Π±ΠΎΡ‚Ρ‹ с индСксами ΠΏΡ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. ПониманиС этих нюансов критичСски Π²Π°ΠΆΠ½ΠΎ для написания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ошибок выполнСния Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

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

ΠœΠ΅Ρ‚ΠΎΠ΄ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с индСксами

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

Когда Π²Ρ‹ удаляСтС строку с индСксом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 5, всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²Π²Π΅Ρ€Ρ…. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, которая Π±Ρ‹Π»Π° ΠΏΠΎΠ΄ индСксом 6, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ становится строкой с индСксом 5. Если Π²Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚Π΅ Ρ†ΠΈΠΊΠ» с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ счСтчика, Π²Ρ‹ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ пропуститС эту ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡƒΡŽ строку. ИмСнно поэтому прямой ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строку ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ удалСния) Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ВсСгда провСряйтС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ индСкса ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ».

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ бСзопасноС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ». Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая строка Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° Π½Π° соотвСтствиС ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Для ИндСкс = Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 По 0 Π¦ΠΈΠΊΠ»

Если Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ[ИндСкс].Π‘ΡƒΠΌΠΌΠ° < 100 Π’ΠΎΠ³Π΄Π°

Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс);

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» быстрСС?

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

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π€ΠΈΠ»ΡŒΡ‚Ρ€ для очистки Π΄Π°Π½Π½Ρ‹Ρ…

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ Ρ€ΡƒΡ‡Π½ΠΎΠΌΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€. Π­Ρ‚ΠΎΡ‚ инструмСнт позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΎΡ‚Π±ΠΎΡ€Ρƒ. ЀактичСски, Π²Ρ‹ Π½Π΅ удаляСтС строки ΠΈΠ· старой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ, ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚ лишнСго.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± индСксах ΠΈ сдвигах элСмСнтов. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ сама Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ΠΎΡ‚Π±ΠΎΡ€Π° достаточно прост.

Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ памяти. ΠœΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Если исходная Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит сотни тысяч строк, это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌΡƒ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΡŽ потрСблСния рСсурсов сСрвСром ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€, ΠΊΠΎΠ³Π΄Π° исходная Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 10-20 тысяч строк. Для ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… массивов Π΄Π°Π½Π½Ρ‹Ρ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ сразу Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС условия ΠΎΡ‚Π±ΠΎΡ€Π°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² конструкторС запросов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ условия Ρ‡Π΅Ρ€Π΅Π· логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ И, Π˜Π›Π˜, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сравнСния.

ΠžΡ‚Π±ΠΎΡ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

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

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", 0);

Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ = Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Π€ΠΈΠ»ΡŒΡ‚Ρ€(ΠžΡ‚Π±ΠΎΡ€);

ПослС выполнСния этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСмСнная Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Бтарая Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° сборщиком мусора, Ссли Π½Π° Π½Π΅Π΅ Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ссылок.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ удалСния ΠΏΡ€ΠΈ прямом Ρ†ΠΈΠΊΠ»Π΅

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

Π’ конструкции Ρ†ΠΈΠΊΠ»Π° Для ... По ... Π¦ΠΈΠΊΠ» шаг измСнСния счСтчика фиксирован. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ "ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π° мСстС", приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Пока ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-счСтчиком Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Для, Ρ‡Ρ‚ΠΎ выглядит нССстСствСнно ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅Π³.

Рассмотрим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» Пока, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ индСксом. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС, Π° ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ индСксС (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡƒΠΆΠ΅ заняла новая строка).

  • πŸ” Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ индСкс Π½ΡƒΠ»Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°.
  • πŸ”„ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ условиС, ΠΏΠΎΠΊΠ° индСкс мСньшС количСства строк.
  • ❌ Если строка ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ β€” удаляйтС Π΅Ρ‘ ΠΈ НЕ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ индСкс.
  • βœ… Если строка остаСтся β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ индСкс Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

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

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° удалСния

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

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² очистки

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π€ΠΈΠ»ΡŒΡ‚Ρ€ часто зависит ΠΎΡ‚ объСма Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ. Π’ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π°, Π½ΠΎ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… ΠΎΠ½Π° становится ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΉ для Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° систСмы.

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (10ΠΊ строк)
ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» БрСдняя МинимальноС Высокая
ΠœΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€ Высокая ВысокоС (копия) ΠžΡ‡Π΅Π½ΡŒ высокая
ΠŸΡ€ΡΠΌΠΎΠΉ Ρ†ΠΈΠΊΠ» с Ρ…ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒΡŽ Низкая МинимальноС БрСдняя
Запрос с Π’Π Π•ΠœΠ•ΠΠΠΠ― Π’ΠΠ‘Π›Π˜Π¦Π Высокая Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Максимальная

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

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»
ΠœΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€
Запрос ΠΊ Π‘Π”
ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ запроса

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

Π‘Π΅Ρ€Π²Π΅Ρ€ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (SQL) спроСктирован для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² записСй Π³ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС, Ρ‡Π΅ΠΌ встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ 1Π‘. ΠŸΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ Π·Π°Π΄Π°Ρ‡Ρƒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π° сторону Π‘Π£Π‘Π”, Π²Ρ‹ Ρ€Π°Π·Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ сниТаСтС сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром 1Π‘ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ВЫБРАВЬ ... Π“Π”Π• ... для отсСчСния Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… записСй. Если Π»ΠΎΠ³ΠΈΠΊΠ° удалСния зависит ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ запросС, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ соСдинСний.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ условия ΠΎΡ‚Π±ΠΎΡ€Π° Π² запросС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ значСния NULL. Π’ 1Π‘ пустая ссылка ΠΈ НСопрСдСлСно ΠΌΠΎΠ³ΡƒΡ‚ вСсти сСбя ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² чистом SQL, Π² зависимости ΠΎΡ‚ настроСк совмСстимости.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ пСрСноса Π»ΠΎΠ³ΠΈΠΊΠΈ: вмСсто получСния всСх Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ удалСния Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Ρ†Π΅Π½Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ условиС Π“Π”Π• Π¦Π΅Π½Π° > 0 прямо Π² запрос. Π­Ρ‚ΠΎ сократит врСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ€Π°Π·Ρ‹.

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

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

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° частая ошибка β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строку ΠΈΠ· пустой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, которая ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° ΠΎΡ‡ΠΈΡ‰Π΅Π½Π°. ВсСгда провСряйтС свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ссли Π΅ΡΡ‚ΡŒ сомнСния Π² состоянии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

  • πŸ›‘ Ошибка "ИндСкс Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°" β€” Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π² прямом Ρ†ΠΈΠΊΠ»Π΅ Π±Π΅Π· ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ счСтчика.
  • ⚠️ Ошибка "ПолС Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ" β€” Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли Π² структурС ΠΎΡ‚Π±ΠΎΡ€Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • 🐌 Низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” Π²Ρ‹Π·Π²Π°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ поиском строки ΠΏΠΎ Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ полю Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°.

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ ΠΎΠΊΠ½ΠΎ "ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅", Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ свойства ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ быстро Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΠΊΠ° Ρ†ΠΈΠΊΠ»Π° Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ.

πŸ’‘

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Если ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запроса ΠΊ Π±Π°Π·Π΅ β€” Π΄Π΅Π»Π°ΠΉΡ‚Π΅ это Ρ‚Π°ΠΌ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² памяти 1Π‘ всСгда ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ рСсурсоСмчС.

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ сразу нСсколько строк ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ?

ΠŸΡ€ΡΠΌΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π£Π΄Π°Π»ΠΈΡ‚ΡŒΠΠ΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ сущСствуСт. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ»ΡŒΡ‚Ρ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² Π½Π΅Π³ΠΎ структуру ΠΎΡ‚Π±ΠΎΡ€Π°, которая ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ сразу Π³Ρ€ΡƒΠΏΠΏΡƒ записСй, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π­Ρ‚ΠΎ эквивалСнтно массовому ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ.

Π§Ρ‚ΠΎ происходит с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ послС удалСния строки?

ΠŸΠ°ΠΌΡΡ‚ΡŒ, занимаСмая ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ строкой, Π½Π΅ освобоТдаСтся ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Она возвращаСтся Π² ΠΏΡƒΠ» свободной памяти самого процСсса 1Π‘ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ЀизичСскоС ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ потрСблСния RAM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΠ·ΠΆΠ΅.

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

Для удалСния Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π‘Ρ‚Ρ€ΠΎΠΊΠΈ. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ оставлСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ всСм ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ.

ВлияСт Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строк Π½Π° индСксы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹?

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

МоТно Π»ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ строку?

НСт, опСрация удалСния являСтся Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎΠΉ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса, Ссли Π²Ρ‹ Π½Π΅ сохранили копию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° "ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ" (Undo) для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π’Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ прСдусмотрСно.