следующий оператор можно было бы
Например, следующий оператор можно было бы использовать в
налоговом управлении для создания таблицы, в которой должны
регистрироваться земельные участки, находящиеся в частной
собственности:
CREATE TABLE properties
(taxid Char(6) PRIMARY KEY,
owner Varchar(32),
assessment Dollars,
parcel Polygon);
Для нахождения собственников больших участков можно использовать следующий запрос на языке SQL:
SELECT owner, area(parcel)
FROM properties
WHERE area(parcel) > 20000;
Наиболее эффективный способ выполнения этого запроса мог бы
базироваться на использовании индекса, обеспечивающего прямой
доступ к участкам по значению их площади. Поддержка индексов на
UDF находится в планах развития DB2, но пока ее нет. Но возможно
другое решение, позволяющее выполнить запрос с той же
эффективностью. Добавим к таблице PROPERTIES новый столбец,
который должен содержать заранее вычисленный размер площади, и
создадим триггеры для поддержки корректных значений этого
столбца. Для добавления столбца можно использовать оператор SQL
ALTER TABLE properties
ADD COLUMN area Double;
Теперь определим триггеры, которые активируются при выполнении
над таблицей PROPERTIES операторов INSERT и UPDATE. Вот как могло
бы выглядеть определение триггера для INSERT:
CREATE TRIGGER insertprop
NO CASCADE
BEFORE INSERT ON properties
REFERENCING NEW AS newrow
FOR EACH ROW MODE DB2SQL
SET newrow.area =
area(newrow.area);
Поскольку площадь каждого участка автоматически вычисляется и
хранится в отдельном столбце, для убыстрения доступа к участкам
по значению их площади можно создать индекс на столбце AREA:
CREATE INDEX proparea ON
properties(area);
Теперь перепишем запрос в форме, которая даст возможность DB2
использовать этот индекс:
SELECT owner, area
FROM properties
WHERE area > 20000;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий