У нас есть секционированная таблица из 50+ столбцов и более 30 миллионов записей. Задача состоит в том, чтобы отфильтровать 200 последних записей на основе условий, соответствующих 3 столбцам. Мы создали представление и применили функцию row_number PARTITION по этим 3 столбцам ORDER BY load_date. Теперь при запросе это вызывает снижение производительности и чрезмерное использование ресурсов. > Есть ли что-нибудь, что я могу попробовать от оптимизации запросов для повышения производительности?
QUERY:
SELECT * FROM view_name
WHERE data_as_of_date=20191213 and rule_row_num<=200
and rule_id='some_id' and run_id='some_run_id';
ПРОСМОТР СОЗДАНИЯ:
CREATE VIEW view_name as SELECT *, ROW_NUMBER() OVER (PARTITION BY data_as_of_date, rule_id, run_id ORDER BY load_date DESC) as rule_row_num from table_name;