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

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

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

Бинтаксис прСдлоТСния Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ инструмСнтом управлСния порядком записСй Π² тСкстС запроса являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всСгда располагаСтся Π² самом ΠΊΠΎΠ½Ρ†Π΅ тСкста запроса, послС всСх соСдинСний Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ синтаксичСской ошибкС ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса.

ПослС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова указываСтся имя поля ΠΈΠ»ΠΈ псСвдоним поля, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ произвСсти упорядочиваниС. БистСма автоматичСски сортируСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, Ссли Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. Для явного указания направлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π’ΠžΠ—Π  (возрастаниС) ΠΈ Π£Π‘Π«Π’ (ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΠ΅).

ВсСгда провСряйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, особСнно Ссли Π² названиях ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ спСцсимволы ΠΈΠ»ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ рСгистры Π±ΡƒΠΊΠ².

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ псСвдонимы ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО, Ссли Π² запросС Π΅ΡΡ‚ΡŒ слоТныС выраТСния ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅ ΠΈ понятнСС для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ запроса с сортировкой ΠΏΠΎ Π΄Π°Ρ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°:

ВЫБРАВЬ

ДокумСнтРСализация.Бсылка КАК Бсылка,

ДокумСнтРСализация.Π”Π°Ρ‚Π° КАК Π”Π°Ρ‚Π°,

ДокумСнтРСализация.НомСр КАК НомСр

Π˜Π—

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

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

Π”Π°Ρ‚Π° Π£Π‘Π«Π’

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ нСскольким полям ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

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

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ слСдования ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО ΠΈΠΌΠ΅Π΅Ρ‚ критичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. БистСма сначала сортируСт вСсь массив ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ полю. Π—Π°Ρ‚Π΅ΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ поля, ΠΎΠ½Π° сортируСт записи ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ полю, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ². Π›ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ всСго сначала ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»Ρƒ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, ΠΈ ΡƒΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ записСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сотрудника β€” ΠΏΠΎ Π΄Π°Ρ‚Π΅ сдСлки. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°.

  • πŸ“Š Π‘Π½Π°Ρ‡Π°Π»Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ поля с наимСньшСй ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ (Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ).
  • πŸ“‰ Π—Π°Ρ‚Π΅ΠΌ добавляйтС поля для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ сортировки Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏ.
  • πŸ”„ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ своС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сортировки нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ….

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ слоТныС вычисляСмыС поля, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² спискС Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ псСвдонимы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ запроса.

πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ сортировку?
Волько ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ полю
ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ ΠΏΠΎ 2-3 полям
Π Π΅Π΄ΠΊΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…
НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ, ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ Π² ΠΊΠΎΠ΄Π΅

Π Π°Π±ΠΎΡ‚Π° с NULL значСниями Π² сортировкС

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

Для явного управлСния ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ конструкции NULLS FIRST ΠΈ NULLS LAST. Они ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ систСмС, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ записи с ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ΄Ρ‚ΠΈ Π² самом Π½Π°Ρ‡Π°Π»Π΅ списка ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π² Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ†. Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ полям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ всСгда, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π”Π°Ρ‚Π° ΠΎΠΏΠ»Π°Ρ‚Ρ‹" ΠΈΠ»ΠΈ "ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ".

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ NULLS FIRST ΠΈ NULLS LAST ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ Π²ΠΎ всСх вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ. Π’ старых Ρ€Π΅Π»ΠΈΠ·Π°Ρ… 1Π‘ 7.7 ΠΈΠ»ΠΈ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях 8.0 ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ТСстко Π·Π°ΡˆΠΈΡ‚ΠΎ. ВсСгда тСстируйтС Π²Ρ‹Π²ΠΎΠ΄ пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ вывСсти список Π·Π°ΠΊΠ°Π·ΠΎΠ², ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Π·Π°ΠΊΠ°Π·Ρ‹ (Π±Π΅Π· Π΄Π°Ρ‚Ρ‹ ΠΎΡ‚Π³Ρ€ΡƒΠ·ΠΊΠΈ) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² самом Π½ΠΈΠ·Ρƒ списка, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠ»Π°Π΄ΠΎΠ²Ρ‰ΠΈΠΊΠ°:

ВЫБРАВЬ

Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.НомСр,

Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°.Π”Π°Ρ‚Π°ΠžΡ‚Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° КАК Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°

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

Π”Π°Ρ‚Π°ΠžΡ‚Π³Ρ€ΡƒΠ·ΠΊΠΈ Π’ΠžΠ—Π  NULLS LAST

ИспользованиС этих ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ интСрфСйс Π±ΠΎΠ»Π΅Π΅ прСдсказуСмым. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сразу Π²ΠΈΠ΄ΠΈΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΅Π³ΠΎ внимания, Π° ΠΊΠ°ΠΊΠΈΠ΅ записи ΡΠ²Π»ΡΡŽΡ‚ΡΡ слуТСбными ΠΈΠ»ΠΈ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° запроса

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

Для управлСния порядком записСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ свойство УпорядочиваниС. Оно прСдставляСт собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠŸΠΎΠ»Π΅ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² эту ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΡŽ прСдлоТСния Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО Π² тСкстС запроса.

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

β˜‘οΈ Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ сортировки

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½Π° встроСнном языкС, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ сортировку ΠΏΠΎ наимСнованию ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π°:

Запрос = Новый Запрос(ВСкстЗапроса);

Запрос.УпорядочиваниС.ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ();

ЭлСмСнтУпорядочивания = Запрос.УпорядочиваниС.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

ЭлСмСнтУпорядочивания.ПолС = Новый ΠŸΠΎΠ»Π΅ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚");

ЭлСмСнтУпорядочивания.НаправлСниС = ΠΠ°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.ВозрастаниС;

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ сортировки Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†

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

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

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ использования Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ΅ мСсто сортировки ВлияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Π’Ρ‹Π²ΠΎΠ΄ списка Π² Ρ„ΠΎΡ€ΠΌΡƒ Π’ основном запросС Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ МинимальноС
Π—Π°ΠΏΠΈΡΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π’ запросС заполнСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π‘Ρ€Π΅Π΄Π½Π΅Π΅ (зависит ΠΎΡ‚ объСма)
Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π’ запросС ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ВысокоС ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ…
ДинамичСский список (Π‘ΠšΠ”) Π’ настройках схСмы ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ (Π΄Π²ΠΈΠΆΠΎΠΊ Π‘ΠšΠ”)
ΠŸΠΎΡ‡Π΅ΠΌΡƒ сортировка Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒΡΡ?

ΠŸΡ€ΠΈ записи Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ физичСскоС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ строк Π½Π° дискС ΠΈΠ»ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти для ускорСния ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… соСдинСний (JOIN). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ порядок, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС, Π½Π΅ являСтся Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ самой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° хранСния.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ влияниС Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния

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

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ полям Ρ‚ΠΈΠΏΠ° Π₯ранилищСЗначСния ΠΈΠ»ΠΈ слоТным составным Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ доминирования ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΈΡ… конструкций Π² высоконагруТСнных ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ….

πŸ’‘

ИспользованиС индСксируСмых ΠΏΠΎΠ»Π΅ΠΉ для сортировки β€” Π³Π»Π°Π²Π½Ρ‹ΠΉ способ ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ВсСгда провСряйтС Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ индСксов Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅.

Для Π°Π½Π°Π»ΠΈΠ·Π° скорости выполнСния запроса с сортировкой ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнный инструмСнт "ВСхнологичСский ΠΆΡƒΡ€Π½Π°Π»" ΠΈΠ»ΠΈ консоль запросов. Они ΠΏΠΎΠΊΠ°ΠΆΡƒΡ‚, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ заняла ΠΈΠΌΠ΅Π½Π½ΠΎ опСрация упорядочивания ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ситуациСй, ΠΊΠΎΠ³Π΄Π° запрос выполняСтся Π±Π΅Π· ошибок, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ выводятся Π½Π΅ Π² Ρ‚ΠΎΠΌ порядкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ оТидался. Π§Π°Ρ‰Π΅ всСго это связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ для сортировки Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ Π² сСкции ВЫБРАВЬ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠΉ псСвдоним.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° распространСнная ошибка β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ полю, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БУММА), Π±Π΅Π· ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ группирования. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒHAVING ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ запроса.

  • ❌ Π—Π°Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ псСвдоним поля Π² сСкции ВЫБРАВЬ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π² Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО.
  • ❌ ΠŸΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ полю ΠΈΠ· Π»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ внСшнСго соСдинСния, Π³Π΄Π΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ NULL.
  • ❌ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ сортировку для строк, ΠΊΠΎΠ³Π΄Π° оТидаСтся рСгистронСзависимая.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ БистСму Компоновки Π”Π°Π½Π½Ρ‹Ρ… (Π‘ΠšΠ”), ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ настройки сортировки Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ настройки, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² тСкстС запроса. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ всСгда ΠΈΠΌΠ΅Π΅Ρ‚ настройка, располоТСнная Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ….

МоТно Π»ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ полям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅?

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

Как ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ†Π²Π΅Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π² справочникС?

ΠŸΡ€ΡΠΌΠ°Ρ сортировка ΠΏΠΎ полю Ρ‚ΠΈΠΏΠ° "ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°" ΠΈΠ»ΠΈ "Π¦Π²Π΅Ρ‚" Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ СстСствСнного порядка слСдования. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² справочник Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ тСкстовоС ΠΈΠ»ΠΈ числовоС ΠΏΠΎΠ»Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊΠ’Ρ‹Π²ΠΎΠ΄Π°") ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΠΏΠΎ Π½Π΅ΠΌΡƒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сортировка ΠΏΠΎ Π΄Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ?

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π΅. Если ΠΏΠΎΠ»Π΅ Π΄Π°Ρ‚Ρ‹ хранится ΠΊΠ°ΠΊ строка, сортировка Π±ΡƒΠ΄Π΅Ρ‚ лСксикографичСской (ΠΏΠΎ символам), Π° Π½Π΅ хронологичСской. Π’Π°ΠΊΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Π±Π°Π·Π΅ Π½Π΅Ρ‚ записСй с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ Π΄Π°Ρ‚Π°ΠΌΠΈ (0001.01.01), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ»Π΅Ρ‚Π°Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ списка.

ВлияСт Π»ΠΈ сортировка Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Ρ‚Π°Π±Π»ΠΈΡ†?

Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС опСрация сортировки Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Однако, Ссли запрос выполняСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ управляСмых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ для обновлСния, порядок чтСния записСй ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (deadlock) Π² высококонкурСнтной срСдС.

Как ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ сортировку Π² управляСмой Ρ„ΠΎΡ€ΠΌΠ΅?

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