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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Firebird Π Π£ΠšΠžΠ’ΠžΠ”Π‘Π’Π’Πž Π ΠΠ—Π ΠΠ‘ΠžΠ’Π§Π˜ΠšΠ БАЗ ДАННЫΠ₯Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 75

Автор Π₯Π΅Π»Π΅Π½ Π‘ΠΎΡ€Ρ€ΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ создаСт ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ индСкс для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… employee:


CREATE DESCENDING INDEX DESC_X ON SALAR Y_HISTORY (CHANGE_DATE);


ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот индСкс Π² запросах, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π° слуТащих ΠΈ ΠΈΡ… ΠΎΠΊΠ»Π°Π΄Ρ‹ для дСсяти послСдних слуТащих, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Ρ‹ ΠΎΠΊΠ»Π°Π΄Ρ‹:


SELECT FIRST 10 EMP_NO, NEW_SALARY

FROM SALARY_HISTORY

ORDER BY CHANGE_DATE DESCENDING;


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


CREATE ASCENDING INDEX ASCEND_X ON SALARY_HISTORY (CHANGE_DATE) ;

Π˜Π½Π΄Π΅ΠΊΡΡ‹ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцов

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подмноТСство сСгмСнтов Ρ‚Π°ΠΊΠΎΠ³ΠΎ индСкса для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ запроса, Ссли порядок слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ запрос обращаСтся ΠΊ столбцам Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ORDER BY, соотвСтствуСт порядку слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π² спискС столбцов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π² индСксС. ΠŸΡ€ΠΈ этом для запросов Π½Π΅ трСбуСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π² точности Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ список столбцов, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² индСксС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ индСкс ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ использован ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ИндСкс Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован, Ссли подмноТСство

столбцов Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ORDER BY начинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца индСкса, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцов.

Firebird ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ элСмСнт составного индСкса для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ поиска, Ссли всС ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты индСкса Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Рассмотрим сСгмСнтированный индСкс для Ρ‚Ρ€Π΅Ρ… столбцов col_w, col_x ΠΈ col_y Π² Ρ‚ΠΎΠΌ порядкС, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 18.1.


Рис. 18.1. Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ индСкс

Π­Ρ‚ΠΎΡ‚ индСкс Π±ΡƒΠ΄Π΅Ρ‚ использован ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса:


SELECT <список столбцов> FROM ATABLE

ORDER BY COL_w, COL_X;


Он Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ использован для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросов:


SELECT <список столбцов> FROM ATABLE

ORDER BY COL_x, COL_y;

/**/

SELECT < список столбцов> FROM ATABLE

ORDER BY COL_x, COL_w;

ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ OR Π² запросах

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, трСбуСтся поиск:


. . .

WHERE А > 10000 OR Π’ < 300 OR Π‘ BETWEEN 40 AND 80

. . .


ИндСкс для (А, Π’, Π‘) Π±ΡƒΠ΄Π΅Ρ‚ использован для поиска строк, содСрТащих подходящиС значСния А, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для поиска Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΈΠ»ΠΈ с. Для А ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ индСкс Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ, Ссли отыскиваСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ находится Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ поиска

Π’Π΅ ΠΆΠ΅ самыС ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ORDER BY, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ запросам, содСрТащим ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ WHERE. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создаСт индСкс ΠΏΠΎ нСскольким столбцам для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ PROJECT Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… employee.gdb:


CREATE UNIQUE INDEX PRODTYPEX ON PROJECT (PRODUCT, PROJ_NAME);


ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ для этого запроса Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ индСкс PRODTYPEX, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ WHERE ссылаСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСгмСнт этого индСкса:


SELECT * FROM PROJECT

WHERE PRODUCT ='software';


Напротив, ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ индСкс для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ PROJ_NAME Π½Π΅ являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ сСгмСнтом:


SELECT * FROM PROJECT

WHERE PROJ_NAME STARTING WITH 'Firebird 1';

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ индСксов

Для просмотра всСх индСксов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² isql ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SHOW INDEX:

* Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС индСксы, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

SHOW INDEX имя-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹;


* для просмотра ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ индСкса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

SHOW INDEX имя-индСкса;

ИзмСнСниС индСкса

Активация/дСактивация

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

Π”Ρ€ΡƒΠ³ΠΎΠ΅ использованиС этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° - слуТСбныС дСйствия. Π’ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… условиях распрСдСлСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ мСняСтся постСпСнно, Π° ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… условиях - Π±ΠΎΠ»Π΅Π΅ часто.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранятся индСксы, ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ разбалансированными. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ индСкса ΠΈΠ· Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π² Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ состояниС ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ пСрСсоздаСт ΠΈ балансируСт[54] индСкс.

Бинтаксис:


ALTER INDEX имя-индСкса INACTIVE | ACTIVE ;


Ошибка "индСкс находится Π² использовании"

ИндСкс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π΅Π³ΠΎ транзакция. Π’Π°ΠΊΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² зависимости ΠΎΡ‚ установок Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ:

* Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ WAIT ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ALTER INDEX ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ транзакция;

* с Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ NOWAIT Firebird Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± установках Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ см. Π² Ρ€Π°Π·Π΄. "Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ" Π³Π»Π°Π²Ρ‹ 26.

ИзмСнСниС структуры индСкса

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ALTER синтаксис ALTER INDEX Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для измСнСния структуры Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ индСкс ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° CREATE INDEX.

УдалСниС индСкса

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DROP INDEX удаляСт созданный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ индСкс ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ DROP INDEX Ρ‚Π°ΠΊΠΆΠ΅ Π² случаС нСобходимости измСнСния структуры индСкса: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ сСгмСнтов, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ порядка сСгмСнтов ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ порядка сортировки. Π’Π½Π°Ρ‡Π°Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ DROP INDEX для удалСния индСкса, Π·Π°Ρ‚Π΅ΠΌ - ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ CREATE INDEX для создания индСкса с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ характСристиками.

Бинтаксис:


DROP INDEX ИМЯ;


Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ удаляСт индСкс ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ JOB:


DROP INDEX MINSALX;

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ

Никакой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ индСкс, ΠΊΡ€ΠΎΠΌΠ΅ Π΅Π³ΠΎ создатСля, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ SYSDBA ΠΈΠ»ΠΈ (Π² POSIX) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с привилСгиями root.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ систСмой индСксы, созданныС автоматичСски для столбцов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² ограничСниях ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ, ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ внСшнСго ΠΊΠ»ΡŽΡ‡Π°, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ индСксы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

Π’Π΅ΠΌΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ индСксированиС

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… рСляционных систСм Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… для Firebird Π½Π΅ Π½ΡƒΠΆΠ΅Π½ администратор Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ дСнь с арсСналом Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для поддСрТания Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ содСрТащиСся Π² порядкС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Firebird просто "ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌ состоянии".

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

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» содСрТит Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ указания ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ Π²Π°ΡˆΠΈΡ… индСксов Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ состоянии Π² ΠΏΠΎΠ»Π½ΠΎΠΌ объСмС.

ДСйствия ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ индСксов

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

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

* ПолноС пСрСсозданиС индСкса с нуля ΠΏΡƒΡ‚Π΅ΠΌ удалСния ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ создания Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ индСкса для ΠΎΡ‡Π΅Π½ΡŒ большой ΠΈΠ»ΠΈ динамичСской Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

* ВосстановлСниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ gbak Ρ‚Π°ΠΊΠΆΠ΅ пСрСсоздаСт индСкс Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ состоянии.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ сСлСктивности индСкса

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