create table search_test as select a.* , object_name || owner || object_type || status text1 , status || object_type || owner || object_name text2 from all_objects a;
— добиваем побольше данных insert into search_test select * from search_test union all select * from search_test union all select * from search_test union all select * from search_test union all select * from search_test union all select * from search_test union all select * from search_test;
alter table search_test modify text1 not null; alter table search_test modify text2 not null;
create index search_test_text_i on search_test upper(text1 || ' - ' || text2);
А вообще потрясите вендора, чтобы адекватный задаче инструмент использовал Или миритесь с фулл сканами и тащите таблицу в keep pool или на SSD
Да, она влезает в память. И итак на SSD. Там всего 15к строк так-то в этой конкретной. Но за счёт того, что таких запросов дохрена, даже при таких размерах создаётся приличный поток логического чтения...
CPU не перегружены ? Время отклика у пользователей нормальное ? Если да, то нет особо смысла заморачиваться, просто у вас пару MB "горячих" данных в базе, вот и "греются" логические чтения Но если никому не мешают, то проблема чисто теоретическая
15k строк - этой какой-то мелкий справочник, погоды в buffer_cache не сделает, ну занимает несколько MB, ну висит в топе LRU, но такими объёмами никого на диск не вытеснишь
Да, она влезает в память. И итак на SSD. Там всего 15к строк так-то в этой конкретной. Но за счёт того, что таких запросов дохрена, даже при таких размерах создаётся приличный поток логического чтения...