πŸ” Бколько Ρ‚ΠΈΠΏΠΎΠ² индСксов сущСствуСт Π² SQL?

Π’ SQL сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² индСксов:

  • Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ индСксы (UNIQUE INDEX) Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ значСния Π² индСксированном столбцС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹.
  • Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (PRIMARY KEY INDEX) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  • Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (FOREIGN KEY INDEX) ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эффСктивноС связываниС записСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ.
  • Π˜Π½Π΄Π΅ΠΊΡΡ‹ кластСризации (CLUSTERED INDEX) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ физичСский порядок Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π° дискС, ускоряя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ»Π°ΡƒΠ·Ρƒ ORDER BY.
  • Π˜Π½Π΄Π΅ΠΊΡΡ‹ нСкластСризации (NONCLUSTERED INDEX) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ поиска записСй, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ нСобходимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ физичСский порядок Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания индСкса Π² SQL:


CREATE INDEX idx_name ON table_name (column_name);
    

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Бколько Ρ‚ΠΈΠΏΠΎΠ² индСксов сущСствуСт Π² SQL

Π’ SQL сущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запросов ΠΈ ΡƒΡΠΊΠΎΡ€ΡΡ‚ΡŒ поиск Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим основныС Ρ‚ΠΈΠΏΡ‹ индСксов Π² SQL ΠΈ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

1. ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ индСкс (Clustered Index)

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° кластСризованного индСкса:

  • УскоряСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сортировки ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ быстрый доступ ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания кластСризованного индСкса:

CREATE CLUSTERED INDEX idx_orders ON orders(order_date);

2. НСкластСризованный индСкс (Non-Clustered Index)

НСкластСризованный индСкс Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ускорСния поиска Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π½Π΅ опрСдСляСт физичСскоС располоТСниС строк Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько нСкластСризованных индСксов.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° нСкластСризованного индСкса:

  • УскоряСт поиск Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ значСниям Π² индСксированных столбцах.
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ индСксы для выполнСния запросов Π±Π΅Π· обращСния ΠΊ физичСским Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания нСкластСризованного индСкса:

CREATE NONCLUSTERED INDEX idx_customers ON customers(last_name);

3. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс (Unique Index)

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² индСксированных столбцах. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… индСксов.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса:

  • ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ вставку Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² индСксированныС столбцы.
  • УскоряСт поиск Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ индСксированным столбцам.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса:

CREATE UNIQUE INDEX idx_email ON users(email);

4. ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ индСкс (Full-Text Index)

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° полнотСкстового индСкса:

  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ поиск ΠΏΠΎ тСкстовым Π΄Π°Π½Π½Ρ‹ΠΌ.
  • УскоряСт поиск Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстовых полях.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания полнотСкстового индСкса:

CREATE FULLTEXT INDEX idx_product_description ON products(description);

5. ГСографичСский индСкс (Spatial Index)

ГСографичСский индСкс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ пространствСнного запроса, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС гСографичСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° гСографичСского индСкса:

  • УскоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ пространствСнных запросов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ поиск Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ† областСй.
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ эффСктивно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ гСографичСскиС Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания гСографичСского индСкса:

CREATE SPATIAL INDEX idx_locations ON places(location_data);

6. Π€ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ индСкс (Filtered Index)

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ индСкса:

  • Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ индСкса ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запросов, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подмноТСство Π΄Π°Π½Π½Ρ‹Ρ….
  • Π­ΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ индСкса:

CREATE INDEX idx_active_users ON users(user_status) WHERE user_status = 'active';

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

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

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SQL Π˜ΠΠ”Π•ΠšΠ‘Π« Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚: ОбъяснСниС с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Π˜Π½Π΄Π΅ΠΊΡΡ‹ | ΠžΡΠ½ΠΎΠ²Ρ‹ SQL

SQL для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…: Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π² PostgreSQL

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

5 ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΏΠΎΡ‡Π΅ΠΌΡƒ SQL Server Management Studio Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ сСрвСр

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ роста Π»ΠΎΠ³Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQL

πŸ” Бколько Ρ‚ΠΈΠΏΠΎΠ² индСксов сущСствуСт Π² SQL?

Π’Ρ‹Π±ΠΎΡ€ Π½ΡƒΠΆΠ½Ρ‹Ρ… столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ SQL: ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ это дСлаСтся

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ создаСтся Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… SQL: 5 распространСнных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ