Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«SQL Π·Π° 24 часа». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 38

Автор W Cat

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ индСкс сохраняСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π“Π»Π°Π²Π½Ρ‹ΠΌ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ индСкса являСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости извлСчСния Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ индСксов Π½Π° сами Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ влияСт. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ индСкса ΠΌΠΎΠΆΠ΅Ρ‚ лишь Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ процСсс получСния Π΄Π°Π½Π½Ρ‹Ρ…. Для хранСния индСкса трСбуСтся физичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ индСкс разрастаСтся большС самой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Π±Ρ‹Π» построСн.


ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ индСксов

ΠŸΡ€ΠΈ создании индСкса Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π½Π΅Π³ΠΎ заносится информация ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ³ΠΎ столбца, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ происходит индСксированиС. Когда Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ записи, Π² индСкс Ρ‚ΠΎΠΆΠ΅ заносятся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»ΠΈΠ±ΠΎ Π² условии этого запроса, Π»ΠΈΠ±ΠΎ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова WHERE присутствуСт столбСц, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ индСксированиС, сначала происходит поиск Π² индСксС. Если подходящСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² индСксС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, индСкс Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСстополоТСниС Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. На рис. 16.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ индСкс.

Рассмотрим для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос.

SELECT *

FROM TABLE_NAME

WHERE NAME = 'SMITH';

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 16.1, для ускорСния поиска Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 'SMITH' Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ индСкс, построСнный ΠΏΠΎ значСниям столбца NAME (фамилия). ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ для Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ мСста ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ быстро. Π’ индСксС Π΄Π°Π½Π½Ρ‹Π΅ упорядочСны ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ - здСсь, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это касаСтся Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ.

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

Рис. 16.1. Доступ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСкса


Команда CREATE INDEX

Π€ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° CREATE INDEX, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² SQL, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка. МногиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

CREATE INDEX имя_индСкса ON имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ΠžΡ‡Π΅Π½ΡŒ большиС отличия для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ Π² допустимых опциях ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° CREATE INDEX. НСкоторыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SQL Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΎΠΏΡ†ΠΈΠΈ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (ΠΊΠ°ΠΊ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ CREATE TABLE), ΠΎΠΏΡ†ΠΈΠΈ упорядочСния (DESC | ASC), Π° Ρ‚Π°ΠΊΠΆΠ΅ использованиС кластСров. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ синтаксис, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅.


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

Для Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСксы Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ всС индСксы слуТат ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ - ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… посрСдством ускорСния поиска Π΄Π°Π½Π½Ρ‹Ρ…. На этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим простыС индСксы (построСнныС ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ столбца), составныС ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹Π΅ индСксы (ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцов) ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ индСксы.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рСализациях SQL индСксы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка для создания индСксов ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CREATE INDEX. НаличиС ΠΈΠ»ΠΈ отсутствиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания индСксов, ΠΊΠ°ΠΊ ΠΈ Π΅Π΅ синтаксис, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ языка.


ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ индСксы

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

CREATE INDEX имя_индСкса

ON имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (имя_столбца)

НапримСр, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ EMPLOYEE_TBL ΠΏΠΎ фамилиям слуТащих, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

CREATE INDEX NAME_IDX

ON EMPLOYEEJTBL (LAST__NAME) ;

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

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


Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ индСксы

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

CREATE UNIQUE INDEX имя_индСкса

ON имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (имя__столбца)

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ EMPLOYEE_TBL ΠΏΠΎ фамилиям слуТащих (LAST_NAME), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

CREATE UNIQUE INDEX NAME__IDX

ON EMPLOYEEJTBL (LAST_NAME);

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

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

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ столбцу Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹.


БоставныС индСксы

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

CREATE INDEX имя_индСкса

ON имя_Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (столбСц1, столбСц2)

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания составного индСкса.

CREATE INDEX ORD_IDX

ON ORDERS_TBL (CUST_ID, PROD_ID);

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся составной индСкс ΠΏΠΎ значСниям Π΄Π²ΡƒΡ… столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ORDERSJTBL - столбцов CUST_ID ΠΈ PROD_ID. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ значСния этих столбцов Π±ΡƒΠ΄ΡƒΡ‚ часто ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² условиях ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова WHERE Π² запросах.

ИспользованиС составного индСкса оказываСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ индСксу столбцы часто ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² условиях запросов Π² выраТСниях ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова WHERE.


ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΈ составныС индСксы

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


НСявныС индСксы

НСявныС индСксы - это индСксы, создаваСмыС автоматичСски сСрвСром Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НапримСр, автоматичСски ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ индСксы для ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π—Π°Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ индСксы? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ сСрвСром Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π²Ρ‹. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ добавляСт Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠ²ΠΎΠΌ Ρ‚ΠΎΠ²Π°Ρ€Π΅. Код Ρ‚ΠΎΠ²Π°Ρ€Π° являСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ²Π°Ρ€Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ быстро ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠ΄Π° срСди сотСн ΠΈΠ»ΠΈ тысяч записСй, ΠΊΠΎΠ΄Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ индСксированы. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ создании ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ условий ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для вас автоматичСски создаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ индСкс.


Когда слСдуСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ индСкс?

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

НСплохо ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСксы ΠΈ для Ρ‚Π΅Ρ… столбцов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² выраТСниях ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ORDER BY ΠΈ GROUP BY. НапримСр, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ сортировку ΠΏΠΎ фамилиям слуТащих, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ индСкс ΠΏΠΎ столбцу с фамилиями. Π­Ρ‚ΠΎ автоматичСски размСстит Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ (Π² индСксС) ΠΈ поэтому ускорит сортировку ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….