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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠœΠΈΡ€ InterBase. АрхитСктура, администрированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² InterBase/FireBird/YaffilΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 10

Автор А Ковязин

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· описания синтаксиса, индСкс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ ΠΎΠ΄Π½ΠΎ, Π° нСсколько ΠΏΠΎΠ»Π΅ΠΉ. Π’Π°ΠΊΠΎΠΉ индСкс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ запросах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π² условиях поиска ΠΈΠ»ΠΈ сортировки сочСтаниС индСксированных ΠΏΠΎΠ»Π΅ΠΉ. НапримСр, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π°, содСрТащая поля Ѐамилия, Имя, ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΈ запросС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌ сортировку ΠΏΠΎ ЀИО, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ 1Π°ΠΊΠΎΠΉ индСкс. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ условия Π½Π° всС 3 поля, примСняСмыС Π² индСксС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ прСимущСства. Если ΠΌΡ‹ ΠΆΠ΅Π»Π°Π΅ΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса, Ρ‚ΠΎ индСкс Π±ΡƒΠ΄Π΅Ρ‚ использован Π² случаС, Ссли ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² условии сортировки совпадаСт с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ Π² индСксС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ наш индСкс Π±ΡƒΠ΄Π΅Ρ‚ задСйствован Π² случаС сортировки ΠΏΠΎ Π€Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ ИмСни.

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ выполнСния запроса, содСрТащСго Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ WHERE соСдинСниС ΠΏΠΎΠ»Π΅ΠΉ с условиСм OR рСкомСндуСтся, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ составной индСкс, Π° нСсколько ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… индСксов Π½Π° всС поля, входящиС Π² условиС OR.

К вопросу ΠΎ порядкС сортировки индСкса: ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΌ (ASQENDING]), Π»ΠΈΠ±ΠΎ ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ (DESCENDING]). Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ порядки сортировки? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, для Ρ€Π°Π·Π½Ρ‹Ρ… сортировок! Если ΠΌΡ‹ ΠΆΠ΅Π»Π°Π΅ΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ людСй ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ Π² Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌ порядкС, Ρ‚ΠΎ создаСм Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΉ индСкс (ASC), Π° Ссли Π² ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ (ΠΎΡ‚ Π― Π΄ΠΎ А) - Ρ‚ΠΎ ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ! А Ссли Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Π° индСкса.

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ссылочной цСлостности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСксов

Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ индСкса имССтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° опция - UNIQUE. Если Π΅Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‚ΠΎ индСкс ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния. ЀактичСски это слуТит основой для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (UNIQUffi KEY). Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎ Π΅ΡΡ‚ΡŒ РК - это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡-индСкс, Π½ΠΎ Π½Π΅ всякий UK - это РК. Π’Ρ‹ΡˆΠ΅ Ρ€Π΅Ρ‡ΡŒ шла Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ РК. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (Primary key) - самый распространСнный Π²ΠΈΠ΄ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°. ΠŸΡ€ΠΈ создании ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ автоматичСски создаСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ имя, составлСнноС ΠΈΠ· RDBSPRIMARYNNN, Π³Π΄Π΅ NNN - ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ссылочной цСлостности - ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ понятиС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ нСсовмСстимо с понятиСм Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния, Ρ‚. Π΅. Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² полях, содСрТащихся Π² ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… индСксах, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° NULL. ΠŸΠ΅Ρ€Π΅Π΄ созданиСм ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса Π½Π° ΠΏΠΎΠ»Π΅ слСдуСт ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ статус NOT NULL. Если индСкс создаСтся для ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΏΡ€ΠΈ создании Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ, Π½Π΅ содСрТит Π»ΠΈ индСксированноС ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. И Ссли содСрТит, Ρ‚ΠΎ Π² создании индСкса Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π·Π°Π½ΠΎ.

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

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ индСксов

Π’ Π½Π°Π·Π²Π°Π½ΠΈΠΈ этого Ρ€Π°Π·Π΄Π΅Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ парадокс - индСксы, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, слуТат для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов, ΠΈ оказываСтся, Ρ‡Ρ‚ΠΎ ΠΈΡ… самих Π½Π°Π΄ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ! Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ (Ρ‚Π°ΠΊΠΎΠ²Π° Тизнь) - ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΎΠ± индСксах.

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

* ΠŸΡ€ΠΈ пСрСстройкС индСкса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ALTER INDEX.

* ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ создании индСкса ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ DROP INDEX ΠΈ CREATE INDEX.

* ΠŸΡ€ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ восстановлСнии ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ с использованиСм инструмСнта gbak.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСсчСт статистики. Но Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это дСйствиС Π½Π΅ измСняСт состояниС индСкса, Π° просто сообщаСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π΅Π³ΠΎ состоянии, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот индСкс. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, пСрСсчСт статистики - это Π½Π΅ "Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅" индСкса, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ точная диагностика Π΅Π³ΠΎ состояния.

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ всС эти способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ индСксов.

ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ALTER INDEX ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:


ALTER INDEX name {ACTIVE | INACTIVE};


Π—Π΄Π΅ΡΡŒ name - имя индСкса, a ACTIVE ΠΈ INACTIVE - Π΄Π²Π° состояния индСкса, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ALTER INDEX. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ACTIVE ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ индСкс Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ всСх запросах ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ…. Установка индСкса Π² INACTIVE (Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π΅Π½) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Π΅Π³ΠΎ использования. Для пСрСстройки Π΄Π΅Ρ€Π΅Π²Π° Π½Π°Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:


ALTER INDEX name INACTIVE;

ALTER INDEX name ACTIVE;


ΠŸΡ€ΠΈ этом индСкс Π±ΡƒΠ΄Π΅Ρ‚ пСрСстроСн. ИспользованиС ALTER INDEX ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ: с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСльзя ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСксы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ…, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π°Ρ…; нСльзя ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСкс, Ссли ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ запросом; Π° Ρ‚Π°ΠΊΠΆΠ΅ для измСнСния индСкса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° администратора (SYSDBA) ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ создатСлСм Π΄Π°Π½Π½ΠΎΠ³ΠΎ индСкса.

ΠŸΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСкса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ DROP INDEX ΠΈ CREATE INDEX ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ индСкса ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊ Π΅Π³ΠΎ созданию с чистого листа. Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DROP INDEX ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½:


DROP INDEX имя_индСкса;


ПослС удалСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CREATE INDEX, синтаксис ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ рассматривали.

Π£ способа пСрСстройки индСкса ΠΏΡƒΡ‚Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ пСрСсоздания Π΅ΡΡ‚ΡŒ ограничСния, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ограничСниям Π½Π° использованиС ALTER INDEX.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ способ пСрСстройки индСкса основан Π½Π° свойствС Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… InterBase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ gbak. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Π΅, входящиС Π² индСкс, Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, Π° хранится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ индСкса. ΠŸΡ€ΠΈ восстановлСнии ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ индСкс создаСтся Π·Π°Π½ΠΎΠ²ΠΎ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ см. Π³Π»Π°Π²Ρƒ "Π Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ восстановлСниС ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ" (Ρ‡. 4).

Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ способ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ индСкса - это ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ статистику ΠΏΠΎ индСксам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SET STATISTICS Бтатистика Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ - это Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 0 Π΄ΠΎ 1, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ зависит ΠΎΡ‚ числа Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… (Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ…) записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ InterBase ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ статистику для опрСдСлСния эффСктивности примСнСния Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ индСкса Π² запросС Когда число записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ большом количСствС вставок ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ), Ρ‚ΠΎ пСрСсчСт статистики ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Команда пСрСсчСта статистики ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:


SET STATISTICS INDEX name;


Π—Π΄Π΅ΡΡŒ name - имя индСкса, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пСрСсчитываСтся статистика.

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

ΠœΡ‹ рассмотрСли нСсколько способов ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ индСксов. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ ALTER INDEX ΠΈ DROP/CREATE INDEX ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ индСксы, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ систСмных, создаваСмых автоматичСски индСксов, слуТащих для поддСрТания ссылочной цСлостности. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ эти индСксы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ измСнСния ΠΈ создания Ρ‚Π°Π±Π»ΠΈΡ† - ALTER TABLE ΠΈ CREATE TABLE, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти индСксы ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.