Page 83 - 6430
P. 83
11. ПРИНЦИПИ СТВОРЕННЯ ЗАПИТІВ ДО БАЗ
ГЕОДАНИХ. СТВОРЕННЯ ПРОСТОРОВИХ
ЗАПИТІВ НА МОВІ SQL. ОСНОВНІ ФУНКЦІЇ
СТАНДАРТУ OPENGIS
Сенс функціональності просторових баз даних полягає у
виконанні запитів до бази даних, для яких інакше б потрібна
настільна ГІС. Ефективне використання PostGIS вимагає знання
доступних просторових функцій і вміння створювати індекси, що
забезпечують ефективну роботу.
Конструюючи запит важливо пам'ятати, що тільки
оператори працюють з охопленням (bounding-box-based), типу &
& можуть використовувати просторові індекси GiST. Такі
функції, як distance () не можуть використовувати індекс для
оптимізації своїх операцій. Наприклад, наступний запит був би
дуже повільним на великій таблиці:
SELECT the_geom
FROM geom_table
WHERE ST_Distance (the_geom, GeomFromText ('POINT
(100000 200000)', -1)) <100
Цей запит вибирає все геометрії з geom_table, які
знаходяться на відстані в 100 одиниць від точки (100000, 200000).
Він буде виконуватися повільно, тому що веде за собою
обчислення відстаней між кожною точкою в таблиці і нашою
точкою, тобто одне обчислення ST_Distance () для кожного рядка
таблиці. Ми можемо уникнути цього за допомогою оператора &
&, що зменшує число необхідних обчислень:
SELECT the_geom
FROM geom_table
WHERE the_geom & & 'BOX3D (90900 190900, 100100
200100)':: box3d
AND
ST_Distance (the_geom, GeomFromText ('POINT (100000
200000)', -1)) <100
Цей запит вибирає те-ж геометрії, але робить це більш
ефективно. За умови, що для the_geom існує індекс GiST,
планувальник буде вважати, що використання цього індексу
83