From 38778e2e7823dd9a61f722cfca30f57f6f245ae0 Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Tue, 25 Jan 2022 17:21:43 +0100 Subject: [PATCH] Add hint + improve code --- views/logs_overview.sql | 23 +++++++++++------------ views/logs_tree.sql | 11 +++++++++-- views/nav_regions.sql | 13 +++++-------- views/obj_tables_ref_pages.sql | 12 ++++++------ views/sessions_overview.sql | 21 +++++++++++++++------ 5 files changed, 46 insertions(+), 34 deletions(-) diff --git a/views/logs_overview.sql b/views/logs_overview.sql index c7882b6..024af99 100644 --- a/views/logs_overview.sql +++ b/views/logs_overview.sql @@ -1,17 +1,16 @@ CREATE OR REPLACE VIEW logs_overview AS WITH x AS ( - SELECT - app.get_app_id() AS app_id, - app.get_item('$RECENT_LOG_ID') AS recent_log_id, - app.get_item('$FLAG') AS flag, - app.get_item('$PAGE_ID') AS page_id, - app.get_item('$USER_ID') AS user_id, - app.get_item('$SESSION_ID') AS session_id, - app.get_item('$MODULE_NAME') AS module_name, - app.get_item('$ACTION_NAME') AS action_name, - app.get_date_item('G_TODAY') AS today - FROM users u - WHERE u.user_id = app.get_user_id() + SELECT /*+ MATERIALIZE */ + app.get_app_id() AS app_id, + app.get_number_item('$RECENT_LOG_ID') AS recent_log_id, + app.get_item('$FLAG') AS flag, + app.get_number_item('$PAGE_ID') AS page_id, + app.get_item('$USER_ID') AS user_id, + app.get_number_item('$SESSION_ID') AS session_id, + app.get_item('$MODULE_NAME') AS module_name, + app.get_item('$ACTION_NAME') AS action_name, + app.get_date_item('G_TODAY') AS today + FROM DUAL ) SELECT l.log_id, diff --git a/views/logs_tree.sql b/views/logs_tree.sql index e839561..d327f6f 100644 --- a/views/logs_tree.sql +++ b/views/logs_tree.sql @@ -1,4 +1,10 @@ CREATE OR REPLACE FORCE VIEW logs_tree AS +WITH x AS ( + SELECT /*+ MATERIALIZE */ + app.get_app_id() AS app_id, + app.get_log_tree_id() AS log_id + FROM DUAL +) SELECT l.log_id, l.log_parent, @@ -15,9 +21,10 @@ SELECT l.session_id, l.created_at FROM logs l +CROSS JOIN x CONNECT BY l.log_parent = PRIOR l.log_id -START WITH l.log_id = app.get_log_tree_id() - AND l.app_id IN (app.get_app_id(), 0) +START WITH l.log_id = x.log_id + AND l.app_id IN (x.app_id, 0) ORDER SIBLINGS BY l.log_id; -- COMMENT ON TABLE logs_tree IS '[CORE - DASHBOARD] All messages related to selected tree id (`app.get_log_tree_id()`)'; diff --git a/views/nav_regions.sql b/views/nav_regions.sql index e351e3c..c94a6b7 100644 --- a/views/nav_regions.sql +++ b/views/nav_regions.sql @@ -1,13 +1,10 @@ CREATE OR REPLACE VIEW nav_regions AS WITH x AS ( - SELECT - app.get_item('$PAGE_ID') AS page_id, - app.get_item('$AUTH_SCHEME') AS auth_scheme, - a.app_id - FROM users u - JOIN apps a - ON a.app_id = app.get_app_id() - WHERE u.user_id = app.get_user_id() + SELECT /*+ MATERIALIZE */ + app.get_app_id() AS app_id, + app.get_number_item('$PAGE_ID') AS page_id, + app.get_item('$AUTH_SCHEME') AS auth_scheme + FROM DUAL ), c AS ( SELECT diff --git a/views/obj_tables_ref_pages.sql b/views/obj_tables_ref_pages.sql index d52ee31..9ab8b4f 100644 --- a/views/obj_tables_ref_pages.sql +++ b/views/obj_tables_ref_pages.sql @@ -1,10 +1,10 @@ CREATE OR REPLACE VIEW obj_tables_ref_pages AS WITH x AS ( - SELECT - app.get_app_id() AS app_id, - app.get_item('$TABLE_NAME') AS table_name - FROM users u - WHERE u.user_id = app.get_user_id() + SELECT /*+ MATERIALIZE */ + app.get_app_id() AS app_id, + app.get_owner() AS owner_, + app.get_item('$TABLE_NAME') AS table_name + FROM DUAL ) SELECT r.page_id, @@ -31,7 +31,7 @@ WHERE r.query_type_code = 'TABLE' SELECT DISTINCT d.name AS view_name FROM user_dependencies d CROSS JOIN x - WHERE d.referenced_owner = app.get_owner() + WHERE d.referenced_owner = x.owner_ AND d.type = 'VIEW' CONNECT BY NOCYCLE d.referenced_name = PRIOR d.name AND d.referenced_type = 'VIEW' diff --git a/views/sessions_overview.sql b/views/sessions_overview.sql index 41679b6..71d3e4b 100644 --- a/views/sessions_overview.sql +++ b/views/sessions_overview.sql @@ -1,15 +1,24 @@ CREATE OR REPLACE VIEW sessions_overview AS -WITH s AS ( +WITH x AS ( + SELECT /*+ MATERIALIZE */ + app.get_app_id() AS app_id, + app.get_number_item('$SESSION_ID') AS session_id, + app.get_item('$USER_ID') AS user_id, + app.get_date_item('G_TODAY') AS today + FROM DUAL +), +s AS ( SELECT s.*, TRUNC(s.created_at) AS today FROM sessions s - WHERE s.app_id = app.get_app_id() - AND (s.session_id = app.get_item('$SESSION_ID') OR app.get_item('$SESSION_ID') IS NULL) - AND (s.user_id = app.get_item('$USER_ID') OR app.get_item('$USER_ID') IS NULL) + JOIN x + ON s.app_id = x.app_id + AND (s.session_id = x.session_id OR x.session_id IS NULL) + AND (s.user_id = x.user_id OR x.user_id IS NULL) -- - AND s.created_at >= app.get_date_item('G_TODAY') - AND s.created_at < app.get_date_item('G_TODAY') + 1 + AND s.created_at >= x.today + AND s.created_at < x.today + 1 ), l AS ( SELECT