Page 81 - 6430
P. 81

запису  в  базі  даних.  Індексація  організовує  дані  в  пошукове
                  дерево,  по  якому  можна  швидко  переміщатися,  щоб  швидко

                  знайти  певний  запис.  PostgreSQL  за  замовчуванням  підтримує
                  три види індексів: індекси B-Tree, індекси R-Tree й індекси GiST.
                           B-Tree  (B-дерева)  використовуються,  коли  дані  можуть

                  бути розсортовані уздовж однієї осі; наприклад, числа, символи,
                  дати.  Дані  ГІС  не  можуть  бути  раціональним  способом
                  відсортовані  уздовж  однієї  осі  (що  більше:  (0,0)  або  (0,1)  або

                  (1,0)?), А тому для їх індексування B-Tree не допоможуть.
                           R-Tree  (R-дерева)  розбивають  дані  на  прямокутники,  під-
                  прямокутники,             під-під-прямокутники                та       т.д.       R-Tree
                  використовуються  в  деяких  просторових  базах  даних  для

                  індексації  даних  ГІС,  але  в  PostgreSQL  реалізація  R-Tree  не
                  настільки надійна, як реалізація GiST.
                           Індекси GiST (Generalized Search Trees - узагальнені дерева

                  пошуку) розділяють дані на "об'єкти по одну сторону" ("things to
                  one  side"),  "пересічні  об'єкти"  ("things  which  overlap"),  "об'єкти
                  всередині" ("things which are inside ") і можуть бути використані
                  для  багатьох  типів  даних,  включаючи  дані  ГІС.  PostGIS

                  використовує реалізацію R-Tree поверх GiST для індексації даних
                  ГІС.
                           Індекси GiST

                           GiST означає "узагальнене пошукове дерево" ("Generalized
                  Search  Tree")  і  є  загальною  формою  індексації.  Крім  індексації
                  ГІС,  GiST  використовується  для  прискорення  пошуку  для  всіх

                  видів  нерегулярних  структур  даних  (цілочисельні  масиви,
                  спектральні  дані  і  т.д.),  до  яких  не  застосовується  звичайне
                  індексування B-Tree.

                           Коли  таблиця  даних  ГІС  виростає  до  декількох  тисяч
                  записів,  створення  індексів  необхідно  для  прискорення  пошуку
                  просторових  даних  (крім  випадків,  коли  весь  ваш  пошук
                  грунтується  атрибутах.  Тоді  вам  достатньо  звичайних  індексів

                  полів атрибутів).
                           Нижче  описаний  синтаксис  запиту  для  створення  GiST-
                  індексу стовпчика "geometry":

                           CREATE INDEX [indexname] ON [tablename] USING GIST
                  ([geometryfield]);

                           Створення  просторового  індексу  вимагає  інтенсивних

                                                              81
   76   77   78   79   80   81   82   83   84   85   86