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

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

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

АрхитСктура запросов ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² SQL

Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ запрос Π½Π° языкС 1Π‘ с условиСм ΠΎΡ‚Π±ΠΎΡ€Π° ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ полю, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ этот тСкст Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… "ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ". Π‘Π½Π°Ρ‡Π°Π»Π° происходит синтаксичСский Π°Π½Π°Π»ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π° запроса, послС Ρ‡Π΅Π³ΠΎ транслятор запросов ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ SQL, понятный ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π” (MS SQL, PostgreSQL ΠΈΠ»ΠΈ Oracle). Π­Ρ‚ΠΎΡ‚ этап критичСски Π²Π°ΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь закладываСтся основа Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π° выполнСния.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° стараСтся максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности индСксации, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² структурС Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Если условиС поиска сформулировано ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, транслируСмый SQL-запрос Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ WHERE, которая ссылаСтся Π½Π° индСксированныС столбцы. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, сСрвСру Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… придСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ… записСй ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ катастрофичСскому падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² условиях ΠΎΡ‚Π±ΠΎΡ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π“ΠžΠ”(Π”Π°Ρ‚Π°) ΠΈΠ»ΠΈ Π›Π•Π’(Код, 3)) часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ индСкс Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ»Π΅ проиндСксировано. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ условия Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° сравнСния стояло Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя поля.

Для Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… процСсс происходит ΠΈΠ½Π°Ρ‡Π΅: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° считываСт Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ ΠΈΡ… собствСнными силами, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ…. Π’ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ вся тяТСлая Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ лоТится Π½Π° ΠΏΠ»Π΅Ρ‡ΠΈ сСрвСра Π‘Π£Π‘Π”, Ρ‡Ρ‚ΠΎ являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сцСнариСм для ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСм.

πŸ’‘

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

Роль индСксов Π² ускорСнии Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ

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

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

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

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Ѐайловая база (fbf)
MS SQL Server
PostgreSQL
Oracle
НС знаю Ρ‚ΠΎΡ‡Π½ΠΎ

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ поиска ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

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

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

Особого внимания заслуТиваСт поиск ΠΏΠΎ ссылкам Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ справочники. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Ρ…Ρ€Π°Π½ΠΈΡ‚ ссылки Π² Π²ΠΈΠ΄Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (UUID), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 16 Π±Π°ΠΉΡ‚. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² происходит ΠΎΡ‡Π΅Π½ΡŒ быстро, Π½ΠΎ Ссли Π² условии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ сама ссылка, Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΅Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Найти Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ"), Ρ‚ΠΎ трСбуСтся соСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†.

Π’ΠΈΠΏ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска ВрСбования ΠΊ индСксу ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ
Число Высокая Π–Π΅Π»Π°Ρ‚Π΅Π»Π΅Π½ Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ для Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ²
Π‘Ρ‚Ρ€ΠΎΠΊΠ° Высокая ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»Π΅Π½ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Зависит ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ сравнСния
Π”Π°Ρ‚Π° Высокая АвтоматичСский ИдСально для пСриодичСских ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²
Бсылка ΠžΡ‡Π΅Π½ΡŒ высокая ВсСгда индСксирован Поиск ΠΏΠΎ UUID ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ
Π‘ΡƒΠ»Π΅Π²ΠΎ Низкая Часто Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Малая ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ значСния

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

ВлияниС состава условий Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π›ΠΎΠ³ΠΈΠΊΠ° построСния условий ΠΎΡ‚Π±ΠΎΡ€Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π΄ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚, смоТСт Π»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ условиС Π²ΠΈΠ΄Π° Π“Π΄Π΅ Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ для использования индСкса. Однако, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΡŽΠ°Π½ΡΡ‹.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ конструкции НЕ (Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…. ΠžΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ практичСски всСгда ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ использованиС индСкса, заставляя сСрвСр ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС строки, ΠΊΡ€ΠΎΠΌΠ΅ искомых.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠŸΠžΠ”ΠžΠ‘ΠΠž (LIKE) Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ полоТСния символа подстановки. Если шаблон начинаСтся с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 'А%'), индСкс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован. Если ΠΆΠ΅ поиск начинаСтся с wildcard-символа (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, '%ΠΎΠ²'), индСкс становится бСсполСзным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ начинаСтся с ΠΊΠΎΠ½Ρ†Π° ΠΈΠ»ΠΈ сСрСдины строки.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ составныС индСксы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ всСгда?

Боставной индСкс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ полям А ΠΈ Π‘) эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π² условии ΠΎΡ‚Π±ΠΎΡ€Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»Π΅ А, Π»ΠΈΠ±ΠΎ поля А ΠΈ Π‘ вмСстС. Если Π² условии Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅ Π‘, индСкс Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ использован, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ отсортированы сначала ΠΏΠΎ А.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ поиска Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ…

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

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

Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ свойства элСмСнтов Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΠ²Ρ‚ΠΎΠžΡ‚Π±ΠΎΡ€ ΠΈ ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. НСграмотная настройка ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ попытаСтся Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ слишком большой объСм Π΄Π°Π½Π½Ρ‹Ρ…, вызывая Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ соСдинСния ΠΈΠ»ΠΈ зависаниС интСрфСйса.

β˜‘οΈ Π§Π΅ΠΊ-лист ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ списка

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

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

Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с поиском

Если поиск ΠΏΠΎ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ провСсти диагностику, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΡƒΠ·ΠΊΠΎΠ΅ мСсто. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ выполнСния запроса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнных срСдств ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ инструмСнтов администратора Π‘Π£Π‘Π”.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ консоль запросов ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ "Анализ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ", Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ тСкст SQL-запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ этот запрос ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ нСпосрСдствСнно Π² срСдС управлСния Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SQL Server Management Studio), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠ»Π°Π½ выполнСния.

ΠžΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Table Scan ΠΈΠ»ΠΈ Clustered Index Scan Π² ΠΏΠ»Π°Π½Π΅ выполнСния. Π˜Ρ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ оТидаСтся Index Seek, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с индСксами ΠΈΠ»ΠΈ ΠΎ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ написании условия ΠΎΡ‚Π±ΠΎΡ€Π° Π² ΠΊΠΎΠ΄Π΅ 1Π‘.

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

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

πŸ’‘

90% ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ поиском Π² 1Π‘ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… индСксов ΠΈΠ»ΠΈ пСрСписываниСм условий ΠΎΡ‚Π±ΠΎΡ€Π° Π±Π΅Π· использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π°Π΄ полями.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ поиск ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, хотя ΠΏΠΎΠ»Π΅ проиндСксировано?

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

МоТно Π»ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ поиск ΠΏΠΎ частичному совпадСнию строки?

Поиск ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ '%Ρ‡Π°ΡΡ‚ΡŒ_строки%' ΠΊΡ€Π°ΠΉΠ½Π΅ слоТно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стандартными индСксами. Для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ полнотСкстовый поиск, Ссли Π‘Π£Π‘Π” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ слуТСбныС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹.

ВлияСт Π»ΠΈ количСство записСй Π² справочникС Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска ΠΏΠΎ наимСнованию?

Π”Π°, влияСт Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ, Ссли отсутствуСт индСкс. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ индСкса ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска остаСтся практичСски Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ростС количСства записСй с тысяч Π΄ΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π΅Ρ€Π΅Π²ΠΎ поиска (B-Tree).

Как Π½Π°ΠΉΡ‚ΠΈ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ систСму Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ВСхнологичСский ΠΆΡƒΡ€Π½Π°Π» (Π’Π–) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. НастройтС Π΅Π³ΠΎ Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ событий выполнСния запросов с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 сСкунда). Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ участок ΠΊΠΎΠ΄Π°.