Просмотр с помощью «фильтров и функции row_num», вызывающий чрезмерное использование ресурсов и снижение производительности - PullRequest
0 голосов
/ 08 января 2020

У нас есть секционированная таблица из 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;
...