Π’ процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 программисты часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ построСния слоТных условий Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ логичСскими ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ НЕ ΠΈ Π˜Π›Π˜ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ вопросом школьной Π°Π»Π³Π΅Π±Ρ€Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² контСкстС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π‘Π£Π‘Π” этот Π²Ρ‹Π±ΠΎΡ€ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² конструкции Π“Π”Π• способно ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ Π² процСсс, длящийся ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ Π½Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΉ сСрвСр Π±Π΅Π· нСобходимости.

МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ логичСскоС ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‰Π΅ для восприятия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, ΠΈ поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ НЕ (УсловиС1 Π˜Π›Π˜ УсловиС2). Однако ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ формирования ΠΏΠ»Π°Π½Π° выполнСния запроса сСрвСром 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ½Π°Ρ‡Π΅. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΈΠ·ΡŠΡŽΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ, являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ для создания Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Рассмотрим Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ различия, риски ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ примСнСния этих конструкций.

ЛогичСская ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‹ Π΄Π΅ ΠœΠΎΡ€Π³Π°Π½Π°

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния чистой матСматичСской Π»ΠΎΠ³ΠΈΠΊΠΈ, выраТСния с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² НЕ ΠΈ Π˜Π›Π˜ часто ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° Π±Π΅Π· измСнСния смысловой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π­Ρ‚ΠΎ базируСтся Π½Π° Π·Π°ΠΊΠΎΠ½Π°Ρ… Π΄Π΅ ΠœΠΎΡ€Π³Π°Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ гласят, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ Π΄ΠΈΠ·ΡŠΡŽΠ½ΠΊΡ†ΠΈΠΈ эквивалСнтно ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠΉ. Π’ ΠΊΠΎΠ΄Π΅ это выглядит ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° НЕ (А Π˜Π›Π˜ Π‘) Π½Π° (НЕ А) И (НЕ Π‘).

Однако Π² языкС запросов 1Π‘ синтаксис ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния ΠΈ особСнности ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΡΠΌΠΎΠ΅ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π˜Π›Π˜ Π²Π½ΡƒΡ‚Ρ€ΠΈ условия ΠΎΡ‚Π±ΠΎΡ€Π° позволяСт сСрвСру ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ объСдинСниС мноТСств (UNION ALL) ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивноС сканированиС индСксов. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, использованиС НЕ ΠΏΠ΅Ρ€Π΅Π΄ слоТным составным условиСм часто Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ использования индСксов, пСрСходя ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Ρƒ записСй.

Рассмотрим практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Допустим, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΈ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π˜Π½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятная запись ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ, Ссли ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ мноТСства. Π“ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС явно ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ состояния Ρ‡Π΅Ρ€Π΅Π· логичСскоС слоТСниС ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строгиС ограничСния Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ поля Π±Π΅Π· Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠΉ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ЛогичСская ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Π½Π° выполнСния запроса. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Π½Ρ‹ для сСмантичСски Ρ€Π°Π²Π½Ρ‹Ρ… условий, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° НЕ

Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° НЕ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ влиянии Π½Π° использованиС индСксов Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Когда Π² условии Π“Π”Π• встрСчаСтся конструкция Π²ΠΈΠ΄Π° НЕ ПолС = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, сСрвСру 1Π‘ слоТнСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для быстрого поиска. ВмСсто Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ обращСния ΠΊ индСксу, Π‘Π£Π‘Π” часто Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, провСряя ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π½Π° соотвСтствиС ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ отрицания.

ОсобСнно ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° ситуация, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ примСняСтся ΠΊ составному ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ НЕ (Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚1 = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1 Π˜Π›Π˜ Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚2 = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2) являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых тяТСлых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Π’ этом случаС систСма Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ эффСктивно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· доступных индСксов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ строится ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ большиС массивы Π΄Π°Π½Π½Ρ‹Ρ… постфактум.

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

  • πŸ“‰ ПолноС сканированиС Ρ‚Π°Π±Π»ΠΈΡ† вмСсто использования индСксов Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ замСдляСт Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ.
  • πŸ’Ύ Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сСрвСр Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… (MS SQL, PostgreSQL) ΠΈΠ·-Π·Π° нСэффСктивных ΠΏΠ»Π°Π½ΠΎΠ² выполнСния.
  • ⏳ Рост Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² с большими Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ.
πŸ“Š Какой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ для слоТных условий?
Π˜Π›Π˜
НЕ
ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ И ΠΈ НЕ
Зависит ΠΎΡ‚ ситуации

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π˜Π›Π˜ Π² запросах 1Π‘

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ отрицания, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π˜Π›Π˜ (Π΄ΠΈΠ·ΡŠΡŽΠ½ΠΊΡ†ΠΈΡ) часто позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ запросов Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° нСсколько ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡. Π‘Π΅Ρ€Π²Π΅Ρ€ 1Π‘ способСн Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запрос с условиСм ПолС = А Π˜Π›Π˜ ПолС = Π‘ Π² объСдинСниС Π΄Π²ΡƒΡ… нСзависимых Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ. КаТдая ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° с использованиСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ индСкса, послС Ρ‡Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ.

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

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

πŸ’‘

ΠŸΡ€ΠΈ построСнии запроса ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ условия ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΎ: вмСсто "Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС, ΠΊΡ€ΠΎΠΌΠ΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Ρ…", ΠΏΠΈΡˆΠΈΡ‚Π΅ "Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅". Π­Ρ‚ΠΎ часто позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° НЕ.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠ»Π°Π½ΠΎΠ² выполнСния

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

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° сводная Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°. Она базируСтся Π½Π° эмпиричСских Π΄Π°Π½Π½Ρ‹Ρ… тСстирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях ERP ΠΈ Π£Π’.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ИспользованиС Π˜Π›Π˜ ИспользованиС НЕ ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄
ИспользованиС индСксов ВысокоС (часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько) НизкоС (часто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ) Зависит ΠΎΡ‚ структуры
Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Высокая БрСдняя (слоТныС влоТСния) Низкая
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ высокая Риск Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ тСстирования
РСкомСндация ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ Π² Π“Π”Π• Волько ΠΏΡ€ΠΈ нСобходимости

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°

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

ВЫБРАВЬ

НомСнклатура.Бсылка

Π˜Π—

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура

Π“Π”Π•

НЕ (НомСнклатура.ВидНомСнклатуры = Π—ΠΠΠ§Π•ΠΠ˜Π•(ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅.ВидыНомСнклатуры.Услуга)

Π˜Π›Π˜ НомСнклатура.ВидНомСнклатуры = Π—ΠΠΠ§Π•ΠΠ˜Π•(ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅.ВидыНомСнклатуры.Π’Π°Ρ€Π°))

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с Π˜Π›Π˜

ВЫБРАВЬ НомСнклатура.Бсылка Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура Π“Π”Π• (НомСнклатура.ВидНомСнклатуры = Π—ΠΠΠ§Π•ΠΠ˜Π•(...) Π˜Π›Π˜ НомСнклатура.ВидНомСнклатуры = Π—ΠΠΠ§Π•ΠΠ˜Π•(...)) ... Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс ΠΏΠΎ полю ВидНомСнклатуры.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ написанию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов

Для обСспСчСния высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ слСдуСт ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ряда ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с логичСскими ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° НЕ Π² условии Π“Π”Π•, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· услоТнСния Π»ΠΎΠ³ΠΈΠΊΠΈ. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅, Π° Π½Π΅ ΠΎΡ‚ΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒ лишнСС.

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

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

  • βœ… Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ условия ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΎ: ΠΈΡ‰ΠΈΡ‚Π΅ совпадСния, Π° Π½Π΅ нСсовпадСния.
  • βœ… Π Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ слоТныС условия с Π˜Π›Π˜ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Ссли ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ этого автоматичСски.
  • βœ… ВСстируйтС запросы Π½Π° Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Π½Π° пустой Π±Π°Π·Π΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПовСдСниС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° запросов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ быстро Π² вСрсии 8.3.10, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ пСрСсмотра Π² вСрсии 8.3.24. РСгулярно ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π°ΡƒΠ΄ΠΈΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

πŸ’‘

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π˜Π›Π˜ Π² условии Π“Π”Π• ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ конструкции НЕ ( ... Π˜Π›Π˜ ... ), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

МоТно Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° НЕ Π² запросах 1Π‘?

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, Π³Π΄Π΅ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° отсутствиС значСния (Π•Π‘Π’Π¬NULL) ΠΈΠ»ΠΈ инвСрсии Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π°. Однако Π² условиях сравнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (=, <, >) слСдуСт ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ НЕ Π½Π° пСрСчислСниС допустимых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π˜Π›Π˜ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ.

ВлияСт Π»ΠΈ Ρ‚ΠΈΠΏ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (SQL vs PostgreSQL) Π½Π° Π²Ρ‹Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°?

Π”Π°, влияСт. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π‘Π£Π‘Π” ΠΈΠΌΠ΅ΡŽΡ‚ свои Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. MS SQL Server ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠΉ благодаря Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠ°Ρ€Ρ‚Π°ΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ чувствитСлСн ΠΊ конструкциям с НЕ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, рСкомСндация ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ слоТного отрицания Π² Π“Π”Π• ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π° для всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… 1Π‘ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ индСкс Π² ΠΌΠΎΠ΅ΠΌ запросС?

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ консоль запросов Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия, ввСсти тСкст запроса ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ выполнСния" (ΠΈΠΊΠΎΠ½ΠΊΠ° с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ). Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡƒΠ·Π»Ρ‹: Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ "ΠŸΠΎΠ»Π½Ρ‹ΠΉ сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹" (Table Scan) вмСсто "Поиск ΠΏΠΎ индСксу" (Index Seek), Π·Π½Π°Ρ‡ΠΈΡ‚, индСкс Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΈ условиС, вСроятно, содСрТит ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ НЕ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли условий Π˜Π›Π˜ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 50 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ)?

Если список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π˜Π›Π˜ становится ΠΎΡ‡Π΅Π½ΡŒ большим, запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ сдСлайтС соСдинСниС (JOIN) основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с этой Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Π­Ρ‚ΠΎ часто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС ΠΈ Ρ‡ΠΈΡ‰Π΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠ΄Π°.