πŸ” Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL: простоС руководство для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL?

Для добавлСния индСкса Π² SQL Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ CREATE INDEX. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


CREATE INDEX index_name
ON table_name (column_name);

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ index_name - это имя индСкса, table_name - это имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° column_name - это имя столбца, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово UNIQUE ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ индСкса:


CREATE UNIQUE INDEX index_name
ON table_name (column_name);

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL!

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

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, студСнт! БСгодня ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL. Π˜Π½Π΄Π΅ΠΊΡΡ‹ - это Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ погрузимся Π² подробности ΠΈ рассмотрим, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ индСкс Π² SQL?

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

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL?

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса Π² SQL ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова CREATE INDEX. Π’ΠΎΡ‚ синтаксис:


CREATE INDEX index_name
ON table_name (column1, column2, ...);

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм индСкс с ΠΈΠΌΠ΅Π½Π΅ΠΌ index_name для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ table_name Π½Π° столбцах column1, column2 ΠΈ Ρ‚.Π΄.

Π’ΠΈΠΏΡ‹ индСксов Π² SQL

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² индСксов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ситуаций. НСкоторыС ΠΈΠ· Π½ΠΈΡ…:

  • Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс: Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ значСния столбца ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ Π² индСксированной ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ столбСц с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹.
  • ΠšΠ»Π°ΡΡ‚Π΅Ρ€Π½Ρ‹ΠΉ индСкс: опрСдСляСт физичСский порядок строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, основанный Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ индСксируСмого столбца. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для упорядочСнного доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • НСкластСрный индСкс: отличаСтся ΠΎΡ‚ кластСрного Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ порядок строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅ зависит ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для облСгчСния поиска ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
  • ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ индСкс: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для поиска ΠΏΠΎ словам ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π·Π°ΠΌ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ значСниям.

Когда стоит Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ индСкс Π² SQL?

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ индСксов ΠΌΠΎΠΆΠ΅Ρ‚ принСсти Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π³ΠΎΠ΄Ρ‹, Π½ΠΎ Π½Π΅ всСгда стоит ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования индСксов Π² SQL

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы Π² SQL.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса


CREATE UNIQUE INDEX idx_id
ON users (id);

ΠœΡ‹ создаСм ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс с ΠΈΠΌΠ΅Π½Π΅ΠΌ idx_id для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ users Π½Π° столбцС id.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ кластСрного индСкса


CREATE CLUSTERED INDEX idx_name
ON employees (last_name);

ΠœΡ‹ создаСм кластСрный индСкс с ΠΈΠΌΠ΅Π½Π΅ΠΌ idx_name для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ employees Π½Π° столбцС last_name.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ нСкластСрного индСкса


CREATE NONCLUSTERED INDEX idx_city
ON customers (city);

ΠœΡ‹ создаСм нСкластСрный индСкс с ΠΈΠΌΠ΅Π½Π΅ΠΌ idx_city для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ customers Π½Π° столбцС city.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ полнотСкстового индСкса


CREATE FULLTEXT INDEX idx_search
ON products (description);

ΠœΡ‹ создаСм полнотСкстовый индСкс с ΠΈΠΌΠ΅Π½Π΅ΠΌ idx_search для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ products Π½Π° столбцС description.

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

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ индСкса Π² SQL - это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ИспользованиС индСксов ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ….

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

НадСюсь, этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…!

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

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

Π£Ρ€ΠΎΠΊΠΈ SQL для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… / #6 - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСксов ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ

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

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

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ столбцы Π² SQL: простой Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π‘Π” SQL: процСсс ΠΈ инструкция

πŸ” Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π² SQL: простоС руководство для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² SQL: экспСртноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ!