столбцом против составных индексов
Если известно, что в приложении часто используются вместе столбцы Ord_Id, OrdStatus и OrdDate, то создание составного индекса намного предпочтительнее, чем трех индивидуальных индексов. Кроме того, для применения любой комбинации столбцов Ord_Status и Ord_Date все равно будет достаточно одного приведенного ниже индекса. Этого же индекса достаточно и для операторов SQL, использующих столбец Ord_Id во фразе
where
запроса. Создать такой индекс можно, например, следующим образом:create index U_ORD_ID_STATUS_DATE on ORDERS ( 0rd_Id,0rd_Date,0rd_Status)
tablespace INDX;
Индексы на базе функций
Индексы на базе функций впервые появились в Oracle8i. Как часть создания полного индекса они включают построение индекса с помощью одной или нескольких функций типа
upper, lower, round
и т. п. Запрос получает возможность использовать этот индекс, а не проводить сканирование полной таблицы. До появления версии OracleSi применение любой функции или выражения к индексируемому столбцу автоматически приводило к игнорированию наличия индекса. Ниже приводится пример построения индекса на базе функции:□ create index U_ORD_ID_STATUS_DATE ON ORDERS ( upper(0rd_Id),0rd_Date, Ord_Status) tablespace INDX;
Можно создать индекс на базе функции, используя для этого встроенную функцию PL/SQL. Вот пример такого создания индекса с использованием встроенной функции PL/SQL
calc_profit
create index line..item.Calc_profit on LINE.ITEMS (Calc_Profit(Item_Id, ltem_Cost, Sticker_Price)) tablespace INDX;
В следующем запросе индекс на базе функции использует-
ся для определения таких LINEITEMS, которые дают более $1000 прибыли:
□ select Ord_Id, Item_Id, Item_Cost, Sticker_Price
from Line.Items where Calc_Profit(Item_Id, Item_Cost, Sticker_Price) > 1000;
< Предыдущая | Следующая > |
---|