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

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

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

Бинтаксис ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬

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

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

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

ВЫБРАВЬ

РСгистрНакоплСния.ВоварыНаБкладах.ΠŸΠ΅Ρ€ΠΈΠΎΠ΄,

РСгистрНакоплСния.ВоварыНаБкладах.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ,

РСгистрНакоплСния.ВоварыНаБкладах.НомСнклатура

Π˜Π—

РСгистрНакоплСния.ВоварыНаБкладах КАК РСгистрНакоплСния

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

РСгистрНакоплСния.ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ Π£Π‘Π«Π’,

РСгистрНакоплСния.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π’ΠžΠ—Π 

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

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ псСвдонимы для Ρ‚Π°Π±Π»ΠΈΡ† Π² запросах, это ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ объСм ΠΊΠΎΠ΄Π° ΠΈ сниТаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ ΠΏΡ€ΠΈ написании слоТных условий сортировки.

ВлияниС индСксов Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сортировки Π΄Π°Π½Π½Ρ‹Ρ…

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

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ индСксы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски для ΠΌΠ½ΠΎΠ³ΠΈΡ… стандартных ΠΏΠΎΠ»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ссылки Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹ рСгистров ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹. Однако для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² ΠΈ слоТных составных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ индСкса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ индСкса ΠΏΠΎ полю сортировки β€” частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° "Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ²" Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ….

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ большого количСства индСксов ускоряСт Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ, Π½ΠΎ замСдляСт запись Π΄Π°Π½Π½Ρ‹Ρ…. БалансируйтС количСство индСксов Π² зависимости ΠΎΡ‚ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния ΠΈ записи Π² вашСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ сцСнарии.

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

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнно ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ для индСксации ΠΏΡ€ΠΈ сортировкС:

  • πŸ“… Поля Ρ‚ΠΈΠΏΠ° Π”Π°Ρ‚Π° ΠΈ ВрСмя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… срСзов.
  • 🏷️ БсылочныС поля Π½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ справочники (НомСнклатура, ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹).
  • πŸ”’ ЧисловыС поля, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ производится агрСгация ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².
  • πŸ“ Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ поля нСбольшой Π΄Π»ΠΈΠ½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ поиска.
πŸ“Š Какая Π‘Π£Π‘Π” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² вашСй основной Π±Π°Π·Π΅ 1Π‘?
MS SQL Server
PostgreSQL
Oracle
IBM DB2

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ составным Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ ссылкам

Одной ΠΈΠ· спСцифичСских особСнностСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ являСтся ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ использованиС составных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Поля, хранящиС ссылки Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°" ΠΈΠ»ΠΈ "Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура"), Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ особого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈ упорядочивании. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Ρ‚Π°ΠΊΠΈΠΌ полям выполняСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ° Π‘Π£Π‘Π”.

ΠŸΡ€ΠΈ сортировкС ΠΏΠΎ полю Ρ‚ΠΈΠΏΠ° Бсылка систСма упорядочиваСт записи сначала ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ простой Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΉ сортировки Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ. Для получСния ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° часто трСбуСтся joining со справочником ΠΈ сортировка ΠΏΠΎ Π΅Π³ΠΎ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°ΠΌ.

Рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти список Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ, отсортированный Π½Π΅ ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ ID Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π° ΠΏΠΎ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ. Π’ этом случаС запрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ соСдинСниС с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

ВЫБРАВЬ

ДвиТСния.ΠŸΠ΅Ρ€ΠΈΠΎΠ΄,

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.НомСр КАК НомСрДокумСнта

Π˜Π—

РСгистрНакоплСния.ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ.ДвиТСния КАК ДвиТСния

Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ПО ДвиТСния.РСгистратор = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Бсылка

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

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.НомСр Π£Π‘Π«Π’

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ составных Ρ‚ΠΈΠΏΠΎΠ² Π² PostgreSQL

Π’ Π‘Π£Π‘Π” PostgreSQL сортировка ΠΏΠΎ составным Ρ‚ΠΈΠΏΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π² MS SQL, ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ…. РСкомСндуСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ сортировки ΠΏΠΎ полям с большим количСством Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² высоконагруТСнных систСмах.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ

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

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

Π’Π°Π±Π»ΠΈΡ†Π° Π½ΠΈΠΆΠ΅ дСмонстрируСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ влияниС наличия индСкса Π½Π° врСмя выполнСния сортировки Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ· 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° записСй (Π΄Π°Π½Π½Ρ‹Π΅ усрСднСнныС):

Π’ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ НаличиС индСкса ВрСмя выполнСния (мс) Нагрузка Π½Π° CPU
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π΄Π°Ρ‚Π΅ Π•ΡΡ‚ΡŒ 50-100 Низкая
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π΄Π°Ρ‚Π΅ НСт 2000-5000 Высокая
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ строкС Π•ΡΡ‚ΡŒ 150-300 БрСдняя
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ строкС НСт 3000-6000 Высокая

Если Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с ситуациСй, ΠΊΠΎΠ³Π΄Π° интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ "Π·Π°ΠΌΠΈΡ€Π°Π΅Ρ‚" ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ со списком, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ пытаСтся Π»ΠΈ систСма ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь рСгистр Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Часто достаточно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ содСрТат ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ отсортированныС Π΄Π°Π½Π½Ρ‹Π΅.

πŸ’‘

ИспользованиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ("ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ", "ΠžΠ±ΠΎΡ€ΠΎΡ‚Ρ‹") часто эффСктивнСС Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ расчСта ΠΈ сортировки Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ рСгистров, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ слуТСбныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° сортировки Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π”

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ систСмами управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ MS SQL Server, PostgreSQL ΠΈ Oracle. Π₯отя синтаксис языка запросов 1Π‘ Π΅Π΄ΠΈΠ½ для всСх, внутрСнняя рСализация выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° сортировки ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎ влияСт Π½Π° Ρ‚ΠΎΠ½ΠΊΡƒΡŽ настройку ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² высоконагруТСнных систСмах.

Π’ MS SQL Server ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сортировки тСсно связан с статистикой распрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ…. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ статистика ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° выполнСния, ΠΊΠΎΠ³Π΄Π° сСрвСр ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ индСкс. РСгулярноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статистики являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ обслуТивания для поддСрТания скорости запросов.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПовСдСниС сортировки строк с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ рСгистра (Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ рСгистру) зависит ΠΎΡ‚ настроСк ΠΊΠΎΠ»Π»Π°Ρ†ΠΈΠΈ (Collation) Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ… "А" ΠΈ "Π°" ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ символами ΠΏΡ€ΠΈ сортировкС.

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

ЧастыС ошибки ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… устранСния

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

НапримСр, Ссли Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π“ΠžΠ”(ΠŸΠ΅Ρ€ΠΈΠΎΠ΄), Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ смоТСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс ΠΏΠΎ полю ΠŸΠ΅Ρ€ΠΈΠΎΠ΄. РСшСниСм являСтся вынСсСниС вычислСний Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прилоТСния ΠΈΠ»ΠΈ созданиС вычисляСмого ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с индСксом Π² самой Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли это поддСрТиваСтся Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ошибка β€” сортировка ΠΏΠΎ полям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΎΡ‚Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ отсутствии ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ индСкса. Если запрос Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ 10 строк ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ, Π° сортируСт ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ полю Π±Π΅Π· индСкса, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΠΉ. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ поля сортировки совпадали с полями ΠΎΡ‚Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ Π±Ρ‹Π»ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ составного индСкса.

Для диагностики ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‡Π΅ΠΊ-лист ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ запроса:

  • πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ индСкса ΠΏΠΎ всСм полям Π² сСкции Π£ΠŸΠžΠ Π―Π”ΠžΠ§Π˜Π’Π¬ ПО.
  • πŸ“‰ Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ статистика распрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π£Π‘Π” Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°.
  • 🚫 Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сортировку ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.
  • πŸ“¦ ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ всСх ΠΏΠΎΠ»Π΅ΠΉ (ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ВЫБРАВЬ *).

β˜‘οΈ Аудит ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ запроса

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4
МоТно Π»ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ нСскольким полям с Ρ€Π°Π·Π½Ρ‹ΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ?

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

ВлияСт Π»ΠΈ сортировка Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ записСй Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…?

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

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли индСкс Π΅ΡΡ‚ΡŒ, Π½ΠΎ сортировка всС Ρ€Π°Π²Π½ΠΎ мСдлСнная?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, индСкс Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ статистика устарСла. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ являСтся Π»ΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² условии сортировки нСсовмСстимым с Ρ‚ΠΈΠΏΠΎΠΌ индСкса (нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ пСрСсборка индСкса (Rebuild) ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статистики силами администратора Π‘Π£Π‘Π”.

Как ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅?

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