Я начинаю изучать SQL и реляционные базы данных.Ниже приведена таблица, которая у меня есть, и в ней около 10 миллионов записей.Мой составной ключ - (reltype, from_product_id, to_product_id)
.
Какой стратегии следует придерживаться при выборе столбцов, которые необходимо проиндексировать?Кроме того, я задокументировал операции, которые будут выполняться на столе.Помогите, пожалуйста, определить, какие столбцы или комбинацию столбцов нужно индексировать?
Таблица DDL показана ниже.
Имя таблицы: prod_rel
.
Имя схемы базы данных: public
CREATE TABLE public.prod_rel (
reltype varchar NULL,
assocsequence float4 NULL,
action varchar NULL,
from_product_id varchar NOT NULL,
to_product_id varchar NOT NULL,
status varchar NULL,
starttime varchar NULL,
endtime varchar null,
primary key reltype, from_product_id, to_product_id)
);
Операции, выполняемые с таблицей:
select distinct(reltype )
from public.prod_rel;
update public.prod_rel
set status = ? , starttime = ?
where from_product_id = ?;
update public.prod_rel
set status = ? , endtime = ?
where from_product_id = ?;
select *
from public.prod_rel
where from_product_id in (select distinct (from_product_id)
from public.prod_rel
where status = ?
and action in ('A', 'E', 'C', 'P')
and reltype = ?
fetch first 1000 rows only);
Примечание. Я не выполняю никаких операций JOIN.Также, пожалуйста, игнорируйте заглавные буквы для имен таблиц или столбцов.Я только начинаю.