Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… это: Как устроСно индСксированиС Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… / Π₯Π°Π±Ρ€

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как устроСно индСксированиС Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… / Π₯Π°Π±Ρ€


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

Как Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ индСксы

НСиндСксированная ΠΈ индСксированная Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

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

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ столбца ΠΈΠ»ΠΈ столбцов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊΠΈΠ΅ столбцы Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² запросах ΠΈΠ»ΠΈ поисках.
  2. Π’Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° индСксирования, подходящСго для Ρ‚ΠΈΠΏΠ° индСксируСмых Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, индСксы Π² Π²ΠΈΠ΄Π΅ B-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для индСксирования строковых ΠΈΠ»ΠΈ числовых Π΄Π°Π½Π½Ρ‹Ρ…, Π° полнотСкстовыС индСксы β€” для индСксирования тСкстовых Π΄Π°Π½Π½Ρ‹Ρ….
  3. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° индСксирования ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ столбцам, Ρ‡Ρ‚ΠΎ создаёт структуру Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ значСния Π² столбцах с мСстополоТСниями ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… записСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  4. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ индСкса Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ структурС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ части диска ΠΈΠ»ΠΈ Π² памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ доступ ΠΊ Π½Π΅ΠΉ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ эффСктивным, Ρ‡Π΅ΠΌ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.
  5. ОбновлСниС индСкса Π² случаС добавлСния Π½ΠΎΠ²Ρ‹Ρ… записСй, удалСния ΠΈΠ»ΠΈ измСнСния записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.


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

Алгоритмы индСксирования


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

  • B-Π΄Π΅Ρ€Π΅Π²ΠΎ
  • Bitmap-индСкс
  • Π₯эш-индСкс
  • GiST (Generalized Search Tree, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ поисковоС Π΄Π΅Ρ€Π΅Π²ΠΎ)
  • ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ индСкс


ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ индСксирования ΠΈΠΌΠ΅Π΅Ρ‚ свои ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны; Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΡ… ΠΏΠΎ порядку.

B-Π΄Π΅Ρ€Π΅Π²ΠΎ

▍ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅


B-Π΄Π΅Ρ€Π΅Π²ΠΎ β€” это структура Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ°ΠΌΠΎΠ±Π°Π»Π°Π½ΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ Π΄Π΅Ρ€Π΅Π²Π°, которая часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° индСксирования Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π΄Π΅Ρ€Π΅Π²Π° состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΡƒΠ·Π»Ρ‹; Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся Π² иСрархичСской структурС. Π”Π΅Ρ€Π΅Π²ΡŒΡ B-ΡƒΠ·Π»ΠΎΠ² упорядочСны Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ быстро Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск, вставку ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

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

▍ Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚


Алгоритм B-Π΄Π΅Ρ€Π΅Π²Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ: ΠΏΡ€ΠΈ создании B-Π΄Π΅Ρ€Π΅Π²Π° создаётся пустой ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΡƒΠ·Π΅Π». ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ максимальноС количСство ΠΊΠ»ΡŽΡ‡Π΅ΠΉ («порядок»), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅, управляСт B-порядком Π΄Π΅Ρ€Π΅Π²Π°.
  2. Вставка: ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π² B-Π΄Π΅Ρ€Π΅Π²ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сначала подыскиваСт подходящий ΡƒΠ·Π΅Π»-лист, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡. B-Π΄Π΅Ρ€Π΅Π²ΠΎ раздСляСт Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π»-лист Π½Π° Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΡƒΠ·Π΅Π». Пока Π½Π΅ достигнут ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΡƒΠ·Π΅Π», процСсс раздСлСния ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ. Благодаря этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ остаётся сбалансированным, Π° ΡƒΠ·Π»Ρ‹-Π»ΠΈΡΡ‚ΡŒΡ находятся Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ высотС.
  3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅: ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡŽΡ‡ удаляСтся ΠΈΠ· B-Π΄Π΅Ρ€Π΅Π²Π°, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΡ‰Π΅Ρ‚ ΡƒΠ·Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ» ΠΊΠ»ΡŽΡ‡. Если ΡƒΠ·Π΅Π»-лист Ρ…Ρ€Π°Π½ΠΈΠ» ΠΊΠ»ΡŽΡ‡, Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ извлСкаСтся ΠΈ ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² пСрСбалансировкС. Алгоритм удаляСт ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ лист послС листа-ΡƒΠ·Π»Π°, ΡƒΠ΄Π°Π»ΠΈΠ² ΠΊΠ»ΡŽΡ‡ с Π½ΠΈΠΌ, Ссли ΠΊΠ»ΡŽΡ‡ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ Π½Π΅ Π² ΡƒΠ·Π»Π΅-листС.
  4. Поиск: Π² процСссС поиска ΠΊΠ»ΡŽΡ‡Π° Π² B-Π΄Π΅Ρ€Π΅Π²Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ с ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° ΠΈ рСкурсивно двиТСтся ΠΊ Π²Π΅Ρ‚ΠΊΠ°ΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΡƒΠ·Π΅Π»-лист. ΠœΠ΅Ρ‚ΠΎΠ΄ поиска сравниваСт искомый ΠΊΠ»ΡŽΡ‡ с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, содСрТащимися Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ ΡƒΠ·Π»Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡. Π­Ρ‚ΠΎΡ‚ процСсс продолТаСтся, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ искомый ΠΊΠ»ΡŽΡ‡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ отсутствуСт Π² Π΄Π΅Ρ€Π΅Π²Π΅.

Однако B-Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ нСдостатками:

  • Излишняя Ρ‚Ρ€Π°Ρ‚Π° рСсурсов: B-Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ большой ΠΎΠ±ΡŠΡ‘ΠΌ излишнСго пространства, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² B-Π΄Π΅Ρ€Π΅Π²Π΅ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΡƒΠ·Π»Ρ‹.
  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для вставки, удалСния ΠΈ поиска Π΄Π°Π½Π½Ρ‹Ρ… Π² B-Π΄Π΅Ρ€Π΅Π²Π΅, слоТнСС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ услоТняСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ B-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π².
  • ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ обновлСния: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² B-Π΄Π΅Ρ€Π΅Π²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ…. КаТдая опСрация обновлСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мноТСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ доступа ΠΊ диску, ΠΈ этот процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… B-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π².

▍ Bitmap-индСксированиС

▍ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅


Bitmap-индСксированиС β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° индСксирования Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ (bitmap) для обозначСния наличия ΠΈΠ»ΠΈ отсутствия значСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° индСксирования для Ρ‚Π°Π±Π»ΠΈΡ† с Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π³Π΄Π΅ количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС довольно ΠΌΠ°Π»ΠΎ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‰ΠΈΠΌ количСством строк.

Bitmap-индСксированиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ эффСктивным для столбцов с Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ быстро ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ…. Bitmap-индСксы ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для примСнСния Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ быстро ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΡ‘ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния, Π½ΠΎ ΠΌΠ°Π»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ вставок.

▍ Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

  • Для создания bitmap-индСкса столбца для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния столбца создаётся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ bitmap. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ bitmap ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ, Ρ€Π°Π²Π½ΡƒΡŽ количСству строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ присутствуСт Π² строкС, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π±ΠΈΡ‚Ρƒ Π² bitmap присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, Π° Ссли ΠΎΠ½ΠΎ отсутствуСт, Ρ‚ΠΎ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. (ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π³Π΄Π΅ столбСц Β«GenderΒ» ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«MaleΒ» ΠΈ Β«FemaleΒ». Если этот столбСц ΠΈΠΌΠ΅Π΅Ρ‚ bitmap-индСкс, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° bitmap, Π΄Π»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½Π° количСству строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Когда Π² строкС встрСчаСтся Β«MaleΒ» ΠΈΠ»ΠΈ Β«FemaleΒ», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΈΡ‚ Π² bitmap Β«MaleΒ» ΠΈΠ»ΠΈ Β«FemaleΒ» ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’ случаС отсутствия значСния Β«MaleΒ» ΠΈΠ»ΠΈ Β«FemaleΒ» ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π±ΠΈΡ‚Ρƒ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0.)
  • Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ bitmap-индСкса, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² запросС значСния bitmap ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² AND, OR ΠΈ NOT. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ всС строки, Π³Π΄Π΅ Β«GenderΒ» Ρ€Π°Π²Π½ΠΎ Β«MaleΒ» И Β«AgeΒ» большС 30, Π½Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ bitmap Β«MaleΒ» ΠΈ bitmap Β«Age > 30Β» ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… индСксов. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌ эти Π΄Π²Π° bitmap ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° AND ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ bitmap Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ Π² Ρ‚Π΅Ρ… позициях, Π³Π΄Π΅ ΠΎΠ±Π° условия истинны. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ bitmap ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ строк, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… запросу.)

Bitmap-индСксы ΠΈΠΌΠ΅ΡŽΡ‚ мноТСство нСдостатков, ΠΈ Π² Ρ‚ΠΎΠΌ числС:

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

Π₯эш-индСкс

▍ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅


Π₯эш-индСкс β€” это Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ индСксирования Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для сопоставлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ индСкса с мСстополоТСниями ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… записСй Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ быстрый ΠΌΠ΅Ρ‚ΠΎΠ΄ индСксирования для запросов Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ соотвСтствия Π² ΠΎΠ΄Π½ΠΎΠΌ столбцС.

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

▍ Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΡΡˆ-индСкс, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащая ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сотрудниках, Π² Ρ‚ΠΎΠΌ числС, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ID. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ…ΡΡˆ-индСкс столбца ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ID, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстрого поиска Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° основании Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈΡ… ID.

  1. ΠœΡ‹ создадим Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΡƒΡŽ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ID ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ…ΡΡˆ-ΠΊΠΎΠ΄. Π₯эш-функция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ спроСктирована Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлённоС мноТСство Ρ…ΡΡˆ-ΠΊΠΎΠ΄ΠΎΠ² для Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ распрСдСлСния записСй ΠΏΠΎ ΠΊΠΎΡ€Π·ΠΈΠ½Π°ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ индСкса. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ…ΡΡˆ-функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ…ΡΡˆ-ΠΊΠΎΠ΄Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ ΠΈΠ»ΠΈ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
  2. ΠœΡ‹ создаём Ρ„Π°ΠΉΠ» Ρ…ΡΡˆ-индСкса, содСрТащий Π½Π°Π±ΠΎΡ€ ΠΊΠΎΡ€Π·ΠΈΠ½ (bucket), каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… соотвСтствуСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ…ΡΡˆ-ΠΊΠΎΠ΄Ρƒ сгСнСрированному Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. КаТдая ΠΊΠΎΡ€Π·ΠΈΠ½Π° содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащий записи для этого Ρ…ΡΡˆ-ΠΊΠΎΠ΄Π°.
  3. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ запроса примСняСтся Ρ…ΡΡˆ-функция для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ…ΡΡˆ-ΠΊΠΎΠ΄Π°. Π—Π°Ρ‚Π΅ΠΌ Ρ…ΡΡˆ-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для нахоТдСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ…ΡΡˆ-индСкса. Записи с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ…ΡΡˆ-ΠΊΠΎΠ΄ΠΎΠΌ хранятся Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΡ€Π·ΠΈΠ½Π΅, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ записи Π² этой ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΡƒΡŽ запись/записи. Если ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ нСсколько записСй с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Ρ…ΡΡˆ-ΠΊΠΎΠ΄ΠΎΠΌ), Ρ‚ΠΎ для ΠΈΡ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ создания Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ адрСсации.
  4. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ запись Π² Ρ…ΡΡˆ-индСкс, ΠΌΡ‹ примСняСм ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π° записи Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ…ΡΡˆ-ΠΊΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ вставляСм запись Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ…ΡΡˆ-индСкса. Если ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, вставку ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π° постоянноС врСмя O(1), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ всСго лишь Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ…ΡΡˆ-ΠΊΠΎΠ΄ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ запись Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ. Если ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π΅ΡΡ‚ΡŒ, Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вставку записи Π² связанный список Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΡ€Π·ΠΈΠ½, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ свободный слот.

Π₯эш-индСксы Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ мноТСство нСдостатков, Π² Ρ‚ΠΎΠΌ числС:

  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности поиска: Ρ…ΡΡˆ-индСксы ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поисков равСнства (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Π½Π°ΠΉΡ‚ΠΈ всС записи, Π³Π΄Π΅ столбСц A Ρ€Π°Π²Π΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽΒ»). Они ΠΏΠ»ΠΎΡ…ΠΎ подходят для запросов Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ сортировки.
  • Коллизии: Ρ…ΡΡˆ-индСксы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… нСсколько ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ…ΡΡˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ.
  • НСпрСдсказуСмыС трСбования ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°: Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ…ΡΡˆ-индСкса Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ зависит ΠΎΡ‚ количСства ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² индСксируСмом столбцС. Π­Ρ‚ΠΎ услоТняСт ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

▍ GiST

▍ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅


GiST (Generalized Search Tree, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ поисковоС Π΄Π΅Ρ€Π΅Π²ΠΎ) β€” это Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° индСксирования Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для индСксирования слоТных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, гСомСтричСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², тСкста ΠΈΠ»ΠΈ массивов. Π­Ρ‚ΠΎ сбалансированная дрСвовидная структура, состоящая ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² с мноТСствСнными Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ ΡƒΠ·Π»Π°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» описываСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ»ΠΈ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ связан с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ΠΈΠ»ΠΈ мноТСству. ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Π°Ρ функция зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° индСксируСмых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ подстроСна ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

▍ Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ индСкса GiST, рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ индСксирования пространствСнных Π΄Π°Π½Π½Ρ‹Ρ…. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащая ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π°Ρ…, Π² Ρ‚ΠΎΠΌ числС ΠΈΡ… названия ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΡˆΠΈΡ€ΠΎΡ‚Ρ‹ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρ‹.

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

    ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΡƒΠ·Π΅Π» описываСт вСсь Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΡƒΠ·Π΅Π» описываСт подмноТСство этого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

    ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» связываСтся с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ прСобразования, спСцифичными для индСксируСмого Ρ‚ΠΈΠΏΠ° пространствСнных Π΄Π°Π½Π½Ρ‹Ρ….

  3. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² запросС прСобразуСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования Π² Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

    Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ»ΡŽΡ‡ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ, связанными с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΡƒΠ·Π»ΠΎΠΌ индСкса, начиная с ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°.

    Поиск продолТаСтся Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΡƒΠ·Π΅Π», содСрТащий Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· запроса.

    ΠŸΡ€ΠΎΡ†Π΅ΡΡ повторяСтся, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнут ΡƒΠ·Π΅Π»-лист, содСрТащий элСмСнты индСкса, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² запросС.

  4. Для вставки Π² индСкс Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π³ΠΎΡ€ΠΎΠ΄Π° сначала ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

    Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ»ΡŽΡ‡ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ индСкса, начиная с ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°.

    Если ΡƒΠ·Π΅Π» Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, выполняСтся опСрация раздСлСния для создания Π΄Π²ΡƒΡ… Π½ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ.

GiST ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько нСдостатков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ:

  1. БниТСнная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вставок ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ: структуры индСксирования GiST ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТнСС, Ρ‡Π΅ΠΌ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ структуры индСксирования, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию скорости ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ вставки ΠΈ обновлСния.
  2. Π‘ΠΎΠ»ΡŒΡˆΠ΅ дискового пространства: структуры индСксирования GiST ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ большС дискового пространства, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ индСксирования, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ хранят Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² поиска.
  3. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ для всСх Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: GiST ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ индСксированиС слоТных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пространствСнных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для индСксирования Π±ΠΎΠ»Π΅Π΅ простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ строк.
  4. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ: ΠΈΠ·-Π·Π° слоТности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ индСксы GiST Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС обслуТивания ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ индСксами.

▍ ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ индСкс

▍ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅


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

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

▍ Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚


ΠŸΡ€ΠΎΡ†Π΅ΡΡ полнотСкстового индСксирования состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… этапов:

  1. ВокСнизация: тСкстовоС содСрТимоС индСксируСмого столбца разбиваСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слова ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² индСкс. ΠŸΡ€ΠΈ создании полнотСкстового индСкса систСма Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… сначала Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ тСкстовоС содСрТимоС индСксируСмых столбцов, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слова ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹. Π­Ρ‚ΠΎΡ‚ процСсс называСтся Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… слов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«theΒ», Β«andΒ», Β«orΒ») ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Π½Π΅ΠΉ (Ρ€Π΅Π΄ΡƒΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ слов Π΄ΠΎ ΠΈΡ… Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹).
  2. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π·Π°Ρ‚Π΅ΠΌ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, B-Π΄Π΅Ρ€Π΅Π²Π° ΠΈΠ»ΠΈ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ индСкса. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° индСкса обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ эффСктивного поиска ΠΈ извлСчСния строк, содСрТащих ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹.
  3. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов: систСма Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ полнотСкстовый индСкс для поиска строк, содСрТащих Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹. Π’ процСссС поиска Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ запроса ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с индСксированными Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ строки, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ запросу. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° основании ΠΈΡ… рСлСвантности запросу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ TF-IDF (term frequency-inverse document frequency).

ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΠΎΠ΅ индСксированиС ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки:

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

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅


Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… β€” критичСски ваТная тСхнология, ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰Π°Ρ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ запросов ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Оно Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… эффСктивный поиск ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основании ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запросов ΠΏΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сцСнарии использования ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² индСксирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, B-Π΄Π΅Ρ€Π΅Π²ΡŒΡ, bitmap-индСксы, Ρ…ΡΡˆ-индСксы ΠΈ GiST-индСксы.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± индСксировании Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… рСсурсов:

  1. β€œUse The Index, Luke!”, Markus Winand β€” это ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… SQL, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ основы, Ρ‚Π°ΠΊ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности.
  2. β€œDatabase Indexing Explained”, DigitalOcean β€” Π² этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ прСдставлСно понятноС для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ индСксирования с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° PostgreSQL.
  3. β€œIndexing Strategies for MySQL and MariaDB”, Severalnines β€” Π² этом постС прСдставлСны практичСскиС совСты ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ индСксов Π² MySQL ΠΈ MariaDB.

Telegram-ΠΊΠ°Π½Π°Π» с Ρ€ΠΎΠ·Ρ‹Π³Ρ€Ρ‹ΡˆΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠ·ΠΎΠ², новостями IT ΠΈ постами ΠΎ Ρ€Π΅Ρ‚Ρ€ΠΎΠΈΠ³Ρ€Π°Ρ… πŸ•ΉοΈ

15) Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ индСксированиС?

INDEXING – это ΠΌΠ΅Ρ‚ΠΎΠ΄ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ быстро ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ записи ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ИндСкс – это нСбольшая Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ всСго Π΄Π²Π° столбца. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ столбСц содСрТит копию ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π•Π³ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц содСрТит Π½Π°Π±ΠΎΡ€ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ для хранСния адрСса дискового Π±Π»ΠΎΠΊΠ°, Π³Π΄Π΅ хранится это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°.

ИндСкс –

  • ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ поиска Π² качСствС Π²Π²ΠΎΠ΄Π°
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… записСй.

Из этого руководства ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π‘Π£Π‘Π” Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅:

  • Π’ΠΈΠΏΡ‹ индСксации
  • ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ индСксация
  • Π’Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ индСкс
  • ИндСкс кластСризации
  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ индСкс?
  • B-Tree Index
  • ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° индСксации
  • НСдостатки индСксации

Π’ΠΈΠΏΡ‹ индСксации

Вип индСксов

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСтся Π½Π° основС Π΅Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² индСксации. Π”Π²Π° основных Ρ‚ΠΈΠΏΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² индСксации:

  • ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ индСксация
  • Вторичная индСксация

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ индСксация

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

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ индСксация Ρ‚Π°ΠΊΠΆΠ΅ дСлится Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°.

  • ΠŸΠ»ΠΎΡ‚Π½Ρ‹ΠΉ индСкс
  • Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ индСкс

ΠŸΠ»ΠΎΡ‚Π½Ρ‹ΠΉ индСкс

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

Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ индСкс

Π­Ρ‚ΠΎ индСксная запись, которая отобраТаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅. Π Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ индСкс ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ»ΠΎΡ‚Π½ΠΎΠ³ΠΎ индСксирования. Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ индСксирования Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ столбцов индСкса Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹, адрСс Π±Π»ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ индСкса

Π’Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ индСкс

Π’Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ индСкс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поля, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи, ΠΈ это Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚. Он Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ нСкластСризованный индСкс.

Π­Ρ‚ΠΎΡ‚ Π΄Π²ΡƒΡ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ индСксации Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° отобраТСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня. Для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня ΠΈΠ·-Π·Π° этого выбираСтся большой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ чисСл; Ρ€Π°Π·ΠΌΠ΅Ρ€ отобраТСния всСгда остаСтся нСбольшим.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠΉ индСксации

Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… банковского счСта Π΄Π°Π½Π½Ρ‹Π΅ хранятся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ acc_no; Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ всС счСта Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π±Π°Π½ΠΊΠ° ABC.

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ индСкс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поискового ΠΊΠ»ΡŽΡ‡Π°. ИндСксная запись – это Ρ‚ΠΎΡ‡ΠΊΠ° записи Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ, которая содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° всС записи с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π° поиска.

ИндСкс кластСризации

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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

Он рассматриваСтся Π² ΠΎΠ΄Π½ΠΎΠΌ кластСрС, Π° индСксныС Ρ‚ΠΎΡ‡ΠΊΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° кластСр Π² Ρ†Π΅Π»ΠΎΠΌ. Π—Π΄Π΅ΡΡŒ Department _no – Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ индСкс?

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

B-Tree Index

ИндСкс B-Π΄Π΅Ρ€Π΅Π²Π° – это ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… для индСксации. Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ индСксного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сбалансирован Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ поиска. ВсС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ Π΄Π΅Ρ€Π΅Π²Π° B ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ фактичСскиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, всС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой списком ссылок, Ρ‡Ρ‚ΠΎ позволяСт Π΄Π΅Ρ€Π΅Π²Ρƒ B ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ.

  • Π’Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚ 2 Π΄ΠΎ 4 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ корня Π΄ΠΎ листа Π² основном ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.
  • НСлистовыС ΡƒΠ·Π»Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚ 3 Π΄ΠΎ 5 Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ².
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся ΠΊΠΎΡ€Π½Π΅ΠΌ ΠΈΠ»ΠΈ листом, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ n / 2] Π΄ΠΎ n Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ².

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° индСксации

Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ / прСимущСства индСксирования:

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

НСдостатки индСксации

Π’Π°ΠΆΠ½Ρ‹ΠΌΠΈ нСдостатками / минусами индСксации ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • Для выполнСния систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… индСксирования Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.
  • Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ индСксы для проиндСксированных Π΄Π°Π½Π½Ρ‹Ρ….
  • Π’Π°ΠΌ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎ индСксу Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.
  • Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ SQL Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² запросах INSERT, DELETE ΠΈ UPDATE.

РСзюмС:

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

Β 

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ индСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…? — Глоссарий ИВ

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ индСкса Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

    ИндСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

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

  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ индСксированиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…?

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ индСксация?

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

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

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

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

  • АрхитСктура индСкса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ индСксирования

    АрхитСктура индСкса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ индСксирования

    Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ структуру сбалансированного Π΄Π΅Ρ€Π΅Π²Π° (Ρ‚. Π΅. B-Π΄Π΅Ρ€Π΅Π²Π°) для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² отсортированном Π²ΠΈΠ΄Π΅. (Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ структуры индСксов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ…Π΅Ρˆ-индСкс Oracle, Π½ΠΎ ΠΎΠ½ΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ). ИспользованиС B-tree Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ доступа Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, связанная с индСксом, ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° поля. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅ хранятся значСния столбца Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сортируСт индСкс. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΠ»Π΅ хранится Π³Ρ€ΡƒΠΏΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ располоТСниС Π½Π° дискС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца.

    НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… аспСктов индСксов Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…:

    ΠšΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… аспСктов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ создании индСксов Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ содСрТит ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния. ΠœΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ индСкса β€” это ΠΎΠ±Ρ‰Π΅Π΅ количСство Π½Π΅ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ содСрТит. ΠšΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выраТаСтся с высокой ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. Π’ случаС высокой ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² проиндСксированном столбцС Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² проиндСксированном столбцС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ с Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

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

    Π‘Π΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ индСкса, дСлСнная Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² индСксС, прСдставляСт ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° сотрудников ΠΈΠΌΠ΅Π΅Ρ‚ 100 строк, Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π΅ индСксированных столбцов ΠΈΠΌΠ΅Π΅Ρ‚ 50 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ столбца. Π’ΠΎΠ³Π΄Π° ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ индСксированного столбца Π±ΡƒΠ΄Π΅Ρ‚ 50/100 = 0,5. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Β«1Β» считаСтся Π»ΡƒΡ‡ΡˆΠ΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС значСния Π² индСксС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. Π˜Π·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ столбца с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° всСгда высока, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ содСрТит ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

    Напротив, столбСц, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ нСсколько Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠ·ΠΊΡƒΡŽ ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. НапримСр, столбСц Β«ΠΏΠΎΠ»Β» Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сотрудников с 10 000 записСй Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΡƒΡŽ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ содСрТит ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ «муТской» ΠΈ «ТСнский». Π‘Π΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ столбца ΠΏΠΎΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ 2/10000 = 0,0002.

    ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ сСлСктивности для создания идСального ΠΏΠ»Π°Π½Π°(ΠΎΠ²) выполнСния запросов, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ индСксы для столбцов с высокой ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ. НапримСр, созданиС индСкса для столбца с ΠΈΠΌΠ΅Π½Π΅ΠΌ сотрудника Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ для столбца с ΠΏΠΎΠ»ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС с ΠΈΠΌΠ΅Π½Π΅ΠΌ сотрудника Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ столбца с ΠΏΠΎΠ»ΠΎΠΌ. Π›ΡŽΠ±ΠΎΠΉ запрос, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ значСния столбца ΠΈΠΌΠ΅Π½ΠΈ сотрудника Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ WHERE, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство записСй ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со столбцом ΠΏΠΎΠ»Π°. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ сокращаСт врСмя ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запрос, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство записСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

    ΠŸΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ: ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ уравнСния: 1/количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ индСкс ΠΏΠΎ столбцу с высокой ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ большС записСй для любого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ запроса, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ содСрТит большС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ индСксы с высокой ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния запроса. ΠŸΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° сСлСктивности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ высокоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сСлСктивности индСкса ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ количСству строк Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… запроса.

    НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ сотрудников с трСмя столбцами: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сотрудника, ΠΎΡ‚Π΄Π΅Π» ΠΈ имя. МногиС сотрудники ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΡ‚Π΄Π΅Π»Ρƒ Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сотрудник ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, индСкс столбца ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° сотрудника Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Β«ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΒ», Ρ‡Π΅ΠΌ столбСц ΠΎΡ‚Π΄Π΅Π»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠ·ΠΊΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со столбцом ΠΎΡ‚Π΄Π΅Π»Π°. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ запросов Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SQL Server, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ плотности для опрСдСлСния ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ количСства записСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ столбСц ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈ запросС.

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

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ индСксация | Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΎΡ‚ Chartio

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ индСксация?

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ β€” это способ привСсти Π½Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² порядок, максимально ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ запроса ΠΏΡ€ΠΈ поискС.

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

НапримСр, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ прСдставлСна ​​таблица Π² Π²Ρ‹ΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ источникС Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСупорядочСна.

компания_id ΡˆΡ‚. unit_cost
10 12 1,15
12 12 1,05
14 18 1,31
18 18 1,34
11 24 1,15
16 12 1,31
10 12 1,15
12 24 1,3
18 6 1,34
18 12 1,35
14 12 1,95
21 18 1,36
12 12 1,05
20 6 1,31
18 18 1,34
11 24 1,15
14 24 1,05

Если Π±Ρ‹ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

 SELECT
Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ,
Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния,
ΡΠ΅Π±Π΅ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ
ОВ
index_test
Π“Π”Π•
ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€_ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ = 18
 

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск ΠΏΠΎ всСм 17 строкам Π² порядкС ΠΈΡ… появлСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, свСрху Π²Π½ΠΈΠ·, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° Ρ€Π°Π·. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для поиска всСх ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… экзСмпляров company_id число 18, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ 18 Π² столбцС company_id .

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

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

Запрос ΠΊ нСиндСксированной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ссли ΠΎΠ½ прСдставлСн Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

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

Π‘ индСксом Π² столбцС company_id Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΏΠΎ сути, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

company_id ΡˆΡ‚. unit_cost
10 12 1,15
10 12 1,15
11 24 1,15
11 24 1,15
12 12 1,05
12 24 1,3
12 12 1,05
14 18 1,31
14 12 1,95
14 24 1,05
16 12 1,31
18 18 1,34
18 6 1,34
18 12 1,35
18 18 1,34
20 6 1,31
21 18 1,36

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ company_id Π½ΠΎΠΌΠ΅Ρ€ 18 ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ всС Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ столбцы для этой строки, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС. Если Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС comapny_id Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π²Π΅Π½ 18, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Π²Π΅Ρ€Π½Π΅Ρ‚ всС столбцы, Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ Π² запросС. Если Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС company_id Ρ€Π°Π²Π΅Π½ 20, запрос ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ поиск ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ индСксация?

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

Когда индСкс создаСт структуру Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ столбца, Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ столбСц Π½Π΅ сохраняСтся Π² структурС Π΄Π°Π½Π½Ρ‹Ρ…. Наша структура Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° company_id . Units ΠΈ unit_cost Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² структурС Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΡ‚ΠΊΡƒΠ΄Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Π΅Ρ‰Π΅ поля Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ?

Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто справочной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ располоТСнии Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² памяти. Π’ основном индСкс Π΄Π΅Ρ€ΠΆΠΈΡ‚ company_id ΠΈ домашний адрСс этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строки Π½Π° дискС памяти. На самом Π΄Π΅Π»Π΅ индСкс Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

company_id ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
10 _123
10 _129
11 _127
11 _138
12 _124
12 _130
12 _135
14 _125
14 _131
14 _133
16 _128
18 _126
18 _131
18 _132
18 _137
20 _136
21 _134

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого индСкса запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки Π² столбцС company_id , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ 18, Π° Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

This entry was posted in ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠ΅