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

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

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() чувствитСлСн ΠΊ рСгистру Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ спСцифичСских настройках Π»ΠΎΠΊΠ°Π»ΠΈ. ВсСгда свСряйтС ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ константы ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ сортировку ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ полю. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, заполняСм Π΅Ρ‘ ΠΈ упорядочиваСм ΠΏΠΎ Π΄Π°Ρ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ строки запроса Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

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

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π°", Π’ΠΈΠΏΠ”Π°Ρ‚Π°());

Π’Π—.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘ΡƒΠΌΠΌΠ°", ВипЧисло(15, 2));

// Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ..

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π΄Π°Ρ‚Ρ‹

Π’Π—.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ("Π”Π°Ρ‚Π° Π£Π±Ρ‹Π²");

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ…. ВсСгда провСряйтС синтаксис Π² справкС ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ Ρ€Π΅Π»ΠΈΠ·Π° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ сортировки Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ()"
Π˜Π½Π΄Π΅ΠΊΡΡ‹ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘ΠšΠ”
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° запросом ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ

ИспользованиС индСксов для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ частом ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ индСксы ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ сортировки, индСкс строится ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ упорядочСнными Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° пСрСстановку строк.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСкса выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π˜Π½Π΄Π΅ΠΊΡΡ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(). ПослС этого для получСния отсортированной Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ() с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ созданного индСкса. Π­Ρ‚ΠΎ особСнно эффСктивно Π² сцСнариях, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… направлСниях сортировки, Π½ΠΎ структура Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ экономит рСсурсы сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

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

πŸ’‘

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ индСкс сразу послС заполнСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ссли ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΡƒΡŽ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС. Π­Ρ‚ΠΎ дСшСвлС, Ρ‡Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().

БлоТная сортировка ΠΏΠΎ нСскольким полям

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

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выполняСт сортировку ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ: сначала ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ полю, Π·Π°Ρ‚Π΅ΠΌ, сохраняя порядок ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ, сортируСт ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС иСрархичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ… "Π½Π° Π»Π΅Ρ‚Ρƒ". Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Ρ‡Π΅ΠΌ большС ΠΏΠΎΠ»Π΅ΠΉ участвуСт Π² сортировкС, Ρ‚Π΅ΠΌ дольшС выполняСтся опСрация, особСнно Ссли Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, смСсь строк ΠΈ чисСл).

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сортировки для наглядности.

ПолС 1 НаправлСниС 1 ПолС 2 НаправлСниС 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
ΠžΡ‚Π΄Π΅Π» Π’ΠΎΠ·Ρ€ ЀИО Π’ΠΎΠ·Ρ€ Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ сгруппированы ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»Π° ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ
Π”Π°Ρ‚Π° Π£Π±Ρ‹Π² НомСр Π£Π±Ρ‹Π² Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΡ€ΠΈ совпадСнии Π΄Π°Ρ‚Ρ‹ β€” с большим Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ
ВидНомСнклатуры Π’ΠΎΠ·Ρ€ Π¦Π΅Π½Π° Π£Π±Ρ‹Π² Π“Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ самыС Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ

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

Вонкости Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Null значСниями

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ сортировки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ упорядочивания. ЧисловыС значСния ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ матСматичСскому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, строки β€” лСксикографичСски (посимвольно), Π° Π΄Π°Ρ‚Ρ‹ β€” ΠΏΠΎ Ρ…Ρ€ΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ строковым полям, содСрТащим числа. НапримСр, ΠΏΡ€ΠΈ тСкстовой сортировкС число "10" окаТСтся ΠΏΠ΅Ρ€Π΅Π΄ числом "2", Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ символ "1" ΠΈΠ΄Π΅Ρ‚ Ρ€Π°Π½ΡŒΡˆΠ΅ символа "2".

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… логичСских ошибок, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычисляСмыС поля. Если Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ хранятся строки Π²ΠΈΠ΄Π° "Π—Π°ΠΊΠ°Π·-1", "Π—Π°ΠΊΠ°Π·-10", "Π—Π°ΠΊΠ°Π·-2", стандартная сортировка выдаст Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ порядок. РСшСниСм ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ числовой ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ для сортировки ΠΈΠ»ΠΈ использованиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ форматирования.

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

πŸ’‘

ВсСгда провСряйтС Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ сортировкой. ЛСксикографичСская сортировка чисСл, записанных ΠΊΠ°ΠΊ строки, являСтся самой частой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ логичСских ошибок Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ….

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² запросах ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

НаиболСС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом получСния упорядочСнных Π΄Π°Π½Π½Ρ‹Ρ… являСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сортировки Π΅Ρ‰Π΅ Π½Π° этапС формирования запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π²ΠΈΠΆΠΎΠΊ запросов 1Π‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ индСксы Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (SQL). ΠŸΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ сортировки Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π‘Π£Π‘Π” Ρ€Π°Π·Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ 1Π‘.

Для этого Π² тСкстС запроса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ порядкС. Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ. Однако, Ссли послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ строки, ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния), порядок ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒΡΡ, ΠΈ придСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки самого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ИспользованиС запроса Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировку ΠΏΠΎ вычисляСмым полям ΠΈΠ»ΠΈ полям ΠΈΠ· соСдинСнных Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π΅Π· создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… структур. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ слоТныС выраТСния Π² Π±Π»ΠΎΠΊΠ΅ Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ самого запроса.

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

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

"ВЫБРАВЬ

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

| РСализацияВоваровУслуг.Π”Π°Ρ‚Π° КАК Π”Π°Ρ‚Π°,

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

|Π˜Π—

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

|Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО

| Π”Π°Ρ‚Π° Π£Π‘Π«,

| Π‘ΡƒΠΌΠΌΠ° Π’ΠžΠ—Π ";

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

Π’Π— = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ();

// Π’Π°Π±Π»ΠΈΡ†Π° Π’Π— ΡƒΠΆΠ΅ отсортирована

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ процСсса сортировки

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

ЧастыС ошибки ΠΈ способы ΠΈΡ… устранСния

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

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

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

МоТно Π»ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π’Π°Π±Π»ΠΈΡ†Ρƒ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ?

Π”Π°, это стандартная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() пСрСчислитС ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, указывая Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "ПолС1 Π’ΠΎΠ·Ρ€, ПолС2 Π£Π±Ρ‹Π²"). ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ пСрСчислСния опрСдСляСт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ сортировки.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Ρ‘ Π½ΠΎΠ²Ρ‹Π΅ строки?

НовыС строки Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½Π°Ρ€ΡƒΡˆΠΈΠ² ΠΎΠ±Ρ‰ΠΈΠΉ порядок сортировки. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ порядок, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ добавлСния Π΄Π°Π½Π½Ρ‹Ρ….

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ сортировку ΠΎΡ‡Π΅Π½ΡŒ большой Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ числа ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (10 ΠΈΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ 2)?

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