Это был вопрос к Тому, но он сейчас занят.
Я не администратор баз данных, а простой разработчик Java EE, также я новичок в Oracle, и меня попросили оптимизировать некоторые запросы.
У меня большой стол, вот так
create table test_table(
DUMMY VARCHAR2(50),
COB DATE,
DATA VARCHAR2(100)
);
В реальной таблице есть еще много столбцов, структурированных вокруг даты COB. Для обработки этой таблицы я использую представление
create or replace force view test_view("DUMMY", "COB", "DATA")
AS
SELECT
DUMMY,
COB,
DATA
FROM test_table
WHERE
DUMMY IS NULL
OR DUMMY <> 'INTFR';
Я запрашиваю это представление в основном по дате COB.
SELECT * from TEST_VIEW where COB = '15-Dec-2010'
И я хочу создать специальный функциональный индекс для оптимизации запросов, который бы выглядел следующим образом
CREATE INDEX "TEST_TABLE_DUMMY_COB_IDX" ON "TEST_TABLE" (
case
when DUMMY IS NULL then COB
when DUMMY <> 'INTFR' then COB
end
);
Как я понимаю, таким образом у меня будут все записи за день в индексной таблице B * Tree с ключом COB, оптимизирует ли это мое общее использование запросов, или мне понадобится больше магии, чтобы сделать это работать?