feat(DB): FOSS & EE match indexes
This commit is contained in:
parent
06769cbda0
commit
2aad7ac139
4 changed files with 82 additions and 13 deletions
|
|
@ -2,7 +2,6 @@ BEGIN;
|
|||
|
||||
CREATE INDEX IF NOT EXISTS user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions (user_id, session_id);
|
||||
|
||||
-- FOS:
|
||||
CREATE INDEX IF NOT EXISTS pages_first_contentful_paint_time_idx ON events.pages (first_contentful_paint_time) WHERE first_contentful_paint_time > 0;
|
||||
CREATE INDEX IF NOT EXISTS pages_dom_content_loaded_time_idx ON events.pages (dom_content_loaded_time) WHERE dom_content_loaded_time > 0;
|
||||
CREATE INDEX IF NOT EXISTS pages_first_paint_time_idx ON events.pages (first_paint_time) WHERE first_paint_time > 0;
|
||||
|
|
@ -17,6 +16,46 @@ CREATE INDEX IF NOT EXISTS pages_timestamp_metgt0_idx ON events.pages (timestamp
|
|||
time_to_interactive > 0;
|
||||
CREATE INDEX IF NOT EXISTS pages_session_id_speed_indexgt0nn_idx ON events.pages (session_id, speed_index) WHERE speed_index > 0 AND speed_index IS NOT NULL;
|
||||
CREATE INDEX IF NOT EXISTS pages_session_id_timestamp_dom_building_timegt0nn_idx ON events.pages (session_id, timestamp, dom_building_time) WHERE dom_building_time > 0 AND dom_building_time IS NOT NULL;
|
||||
CREATE INDEX IF NOT EXISTS issues_project_id_idx ON issues (project_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS errors_project_id_error_id_js_exception_idx ON public.errors (project_id, error_id) WHERE source = 'js_exception';
|
||||
CREATE INDEX IF NOT EXISTS errors_project_id_error_id_idx ON public.errors (project_id, error_id);
|
||||
CREATE INDEX IF NOT EXISTS errors_project_id_error_id_integration_idx ON public.errors (project_id, error_id) WHERE source != 'js_exception';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS sessions_start_ts_idx ON public.sessions (start_ts) WHERE duration > 0;
|
||||
CREATE INDEX IF NOT EXISTS sessions_project_id_idx ON public.sessions (project_id) WHERE duration > 0;
|
||||
CREATE INDEX IF NOT EXISTS sessions_session_id_project_id_start_ts_idx ON sessions (session_id, project_id, start_ts) WHERE duration > 0;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions (user_id, session_id);
|
||||
CREATE INDEX IF NOT EXISTS jobs_project_id_idx ON jobs (project_id);
|
||||
CREATE INDEX IF NOT EXISTS errors_session_id_timestamp_error_id_idx ON events.errors (session_id, timestamp, error_id);
|
||||
CREATE INDEX IF NOT EXISTS errors_error_id_timestamp_idx ON events.errors (error_id, timestamp);
|
||||
CREATE INDEX IF NOT EXISTS errors_timestamp_error_id_session_id_idx ON events.errors (timestamp, error_id, session_id);
|
||||
CREATE INDEX IF NOT EXISTS errors_error_id_timestamp_session_id_idx ON events.errors (error_id, timestamp, session_id);
|
||||
CREATE INDEX ON events.resources (timestamp);
|
||||
CREATE INDEX ON events.resources (success);
|
||||
CREATE INDEX ON public.projects (project_key);
|
||||
CREATE INDEX IF NOT EXISTS resources_timestamp_type_durationgt0NN_idx ON events.resources (timestamp, type) WHERE duration > 0 AND duration IS NOT NULL;
|
||||
CREATE INDEX IF NOT EXISTS resources_session_id_timestamp_idx ON events.resources (session_id, timestamp);
|
||||
CREATE INDEX IF NOT EXISTS resources_session_id_timestamp_type_idx ON events.resources (session_id, timestamp, type);
|
||||
CREATE INDEX IF NOT EXISTS resources_timestamp_type_durationgt0NN_noFetch_idx ON events.resources (timestamp, type) WHERE duration > 0 AND duration IS NOT NULL AND type != 'fetch';
|
||||
CREATE INDEX IF NOT EXISTS resources_session_id_timestamp_url_host_fail_idx ON events.resources (session_id, timestamp, url_host) WHERE success = FALSE;
|
||||
CREATE INDEX IF NOT EXISTS resources_session_id_timestamp_url_host_firstparty_idx ON events.resources (session_id, timestamp, url_host) WHERE type IN ('fetch', 'script');
|
||||
CREATE INDEX IF NOT EXISTS resources_session_id_timestamp_duration_durationgt0NN_img_idx ON events.resources (session_id, timestamp, duration) WHERE duration > 0 AND duration IS NOT NULL AND type = 'img';
|
||||
CREATE INDEX IF NOT EXISTS resources_timestamp_session_id_idx ON events.resources (timestamp, session_id);
|
||||
|
||||
DROP TRIGGER IF EXISTS on_insert_or_update ON projects;
|
||||
CREATE TRIGGER on_insert_or_update
|
||||
AFTER INSERT OR UPDATE
|
||||
ON projects
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE notify_project();
|
||||
|
||||
UPDATE tenants
|
||||
SET name=''
|
||||
WHERE name ISNULL;
|
||||
ALTER TABLE tenants
|
||||
ALTER COLUMN name SET NOT NULL;
|
||||
|
||||
|
||||
END;
|
||||
|
|
@ -114,7 +114,7 @@ $$
|
|||
(
|
||||
tenant_id integer generated BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
user_id text NOT NULL DEFAULT generate_api_key(20),
|
||||
name text,
|
||||
name text NOT NULL,
|
||||
api_key text UNIQUE default generate_api_key(20) not null,
|
||||
created_at timestamp without time zone NOT NULL DEFAULT (now() at time zone 'utc'),
|
||||
deleted_at timestamp without time zone NULL DEFAULT NULL,
|
||||
|
|
@ -281,6 +281,11 @@ $$
|
|||
);
|
||||
|
||||
CREATE INDEX ON public.projects (project_key);
|
||||
CREATE TRIGGER on_insert_or_update
|
||||
AFTER INSERT OR UPDATE
|
||||
ON projects
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE notify_project();
|
||||
|
||||
-- --- alerts.sql ---
|
||||
|
||||
|
|
@ -350,10 +355,10 @@ $$
|
|||
CONSTRAINT notification_tenant_xor_user CHECK ( tenant_id NOTNULL AND user_id ISNULL OR
|
||||
tenant_id ISNULL AND user_id NOTNULL )
|
||||
);
|
||||
CREATE INDEX notifications_user_id_index ON public.notifications (user_id);
|
||||
CREATE INDEX notifications_tenant_id_index ON public.notifications (tenant_id);
|
||||
CREATE INDEX notifications_created_at_index ON public.notifications (created_at DESC);
|
||||
CREATE INDEX notifications_created_at_epoch_idx ON public.notifications (CAST(EXTRACT(EPOCH FROM created_at) * 1000 AS BIGINT) DESC);
|
||||
CREATE INDEX notifications_user_id_index ON notifications (user_id);
|
||||
CREATE INDEX notifications_tenant_id_index ON notifications (tenant_id);
|
||||
CREATE INDEX notifications_created_at_index ON notifications (created_at DESC);
|
||||
CREATE INDEX notifications_created_at_epoch_idx ON notifications (CAST(EXTRACT(EPOCH FROM created_at) * 1000 AS BIGINT) DESC);
|
||||
|
||||
CREATE TABLE user_viewed_notifications
|
||||
(
|
||||
|
|
@ -464,6 +469,7 @@ $$
|
|||
CREATE INDEX ON issues (issue_id, type);
|
||||
CREATE INDEX issues_context_string_gin_idx ON public.issues USING GIN (context_string gin_trgm_ops);
|
||||
CREATE INDEX issues_project_id_issue_id_idx ON public.issues (project_id, issue_id);
|
||||
CREATE INDEX issues_project_id_idx ON issues (project_id);
|
||||
|
||||
-- --- errors.sql ---
|
||||
|
||||
|
|
@ -482,12 +488,15 @@ $$
|
|||
stacktrace jsonb, --to save the stacktrace and not query S3 another time
|
||||
stacktrace_parsed_at timestamp
|
||||
);
|
||||
CREATE INDEX errors_error_id_idx ON errors (error_id);
|
||||
CREATE INDEX ON errors (project_id, source);
|
||||
CREATE INDEX errors_message_gin_idx ON public.errors USING GIN (message gin_trgm_ops);
|
||||
CREATE INDEX errors_name_gin_idx ON public.errors USING GIN (name gin_trgm_ops);
|
||||
CREATE INDEX errors_project_id_idx ON public.errors (project_id);
|
||||
CREATE INDEX errors_project_id_status_idx ON public.errors (project_id, status);
|
||||
CREATE INDEX errors_project_id_error_id_js_exception_idx ON public.errors (project_id, error_id) WHERE source = 'js_exception';
|
||||
CREATE INDEX errors_project_id_error_id_idx ON public.errors (project_id, error_id);
|
||||
CREATE INDEX errors_project_id_error_id_integration_idx ON public.errors (project_id, error_id) WHERE source != 'js_exception';
|
||||
CREATE INDEX errors_error_id_idx ON errors (error_id);
|
||||
|
||||
CREATE TABLE user_favorite_errors
|
||||
(
|
||||
|
|
@ -569,7 +578,6 @@ $$
|
|||
CREATE INDEX ON sessions (project_id, metadata_8);
|
||||
CREATE INDEX ON sessions (project_id, metadata_9);
|
||||
CREATE INDEX ON sessions (project_id, metadata_10);
|
||||
-- CREATE INDEX ON sessions (rehydration_id);
|
||||
CREATE INDEX ON sessions (project_id, watchdogs_score DESC);
|
||||
CREATE INDEX platform_idx ON public.sessions (platform);
|
||||
|
||||
|
|
@ -591,6 +599,9 @@ $$
|
|||
CREATE INDEX sessions_user_country_gin_idx ON public.sessions (project_id, user_country);
|
||||
CREATE INDEX ON sessions (project_id, user_country);
|
||||
CREATE INDEX ON sessions (project_id, user_browser);
|
||||
CREATE INDEX sessions_start_ts_idx ON public.sessions (start_ts) WHERE duration > 0;
|
||||
CREATE INDEX sessions_project_id_idx ON public.sessions (project_id) WHERE duration > 0;
|
||||
CREATE INDEX sessions_session_id_project_id_start_ts_idx ON sessions (session_id, project_id, start_ts) WHERE duration > 0;
|
||||
CREATE INDEX sessions_session_id_project_id_start_ts_durationNN_idx ON sessions (session_id, project_id, start_ts) WHERE duration IS NOT NULL;
|
||||
CREATE INDEX sessions_user_id_useridNN_idx ON sessions (user_id) WHERE user_id IS NOT NULL;
|
||||
CREATE INDEX sessions_uid_projectid_startts_sessionid_uidNN_durGTZ_idx ON sessions (user_id, project_id, start_ts, session_id) WHERE user_id IS NOT NULL AND duration > 0;
|
||||
|
|
@ -623,7 +634,7 @@ $$
|
|||
session_id bigint NOT NULL REFERENCES sessions (session_id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (user_id, session_id)
|
||||
);
|
||||
|
||||
CREATE INDEX user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions (user_id, session_id);
|
||||
|
||||
-- --- assignments.sql ---
|
||||
|
||||
|
|
@ -808,6 +819,10 @@ $$
|
|||
);
|
||||
CREATE INDEX ON events.errors (session_id);
|
||||
CREATE INDEX ON events.errors (timestamp);
|
||||
CREATE INDEX errors_session_id_timestamp_error_id_idx ON events.errors (session_id, timestamp, error_id);
|
||||
CREATE INDEX errors_error_id_timestamp_idx ON events.errors (error_id, timestamp);
|
||||
CREATE INDEX errors_timestamp_error_id_session_id_idx ON events.errors (timestamp, error_id, session_id);
|
||||
CREATE INDEX errors_error_id_timestamp_session_id_idx ON events.errors (error_id, timestamp, session_id);
|
||||
CREATE INDEX errors_error_id_idx ON events.errors (error_id);
|
||||
|
||||
|
||||
|
|
@ -857,18 +872,25 @@ $$
|
|||
PRIMARY KEY (session_id, message_id)
|
||||
);
|
||||
CREATE INDEX ON events.resources (session_id);
|
||||
CREATE INDEX ON events.resources (timestamp);
|
||||
CREATE INDEX ON events.resources (success);
|
||||
CREATE INDEX ON events.resources (status);
|
||||
CREATE INDEX ON events.resources (type);
|
||||
CREATE INDEX ON events.resources (duration) WHERE duration > 0;
|
||||
CREATE INDEX ON events.resources (url_host);
|
||||
CREATE INDEX ON events.resources (timestamp);
|
||||
CREATE INDEX ON events.resources (success);
|
||||
|
||||
CREATE INDEX resources_url_gin_idx ON events.resources USING GIN (url gin_trgm_ops);
|
||||
CREATE INDEX resources_url_idx ON events.resources (url);
|
||||
CREATE INDEX resources_url_hostpath_gin_idx ON events.resources USING GIN (url_hostpath gin_trgm_ops);
|
||||
CREATE INDEX resources_url_hostpath_idx ON events.resources (url_hostpath);
|
||||
|
||||
CREATE INDEX resources_timestamp_type_durationgt0NN_idx ON events.resources (timestamp, type) WHERE duration > 0 AND duration IS NOT NULL;
|
||||
CREATE INDEX resources_session_id_timestamp_idx ON events.resources (session_id, timestamp);
|
||||
CREATE INDEX resources_session_id_timestamp_type_idx ON events.resources (session_id, timestamp, type);
|
||||
CREATE INDEX resources_timestamp_type_durationgt0NN_noFetch_idx ON events.resources (timestamp, type) WHERE duration > 0 AND duration IS NOT NULL AND type != 'fetch';
|
||||
CREATE INDEX resources_session_id_timestamp_url_host_fail_idx ON events.resources (session_id, timestamp, url_host) WHERE success = FALSE;
|
||||
CREATE INDEX resources_session_id_timestamp_url_host_firstparty_idx ON events.resources (session_id, timestamp, url_host) WHERE type IN ('fetch', 'script');
|
||||
CREATE INDEX resources_session_id_timestamp_duration_durationgt0NN_img_idx ON events.resources (session_id, timestamp, duration) WHERE duration > 0 AND duration IS NOT NULL AND type = 'img';
|
||||
CREATE INDEX resources_timestamp_session_id_idx ON events.resources (timestamp, session_id);
|
||||
|
||||
CREATE TABLE events.performance
|
||||
(
|
||||
|
|
@ -922,6 +944,7 @@ $$
|
|||
);
|
||||
CREATE INDEX ON jobs (status);
|
||||
CREATE INDEX ON jobs (start_at);
|
||||
CREATE INDEX jobs_project_id_idx ON jobs (project_id);
|
||||
|
||||
|
||||
CREATE TABLE traces
|
||||
|
|
|
|||
|
|
@ -3,4 +3,7 @@ BEGIN;
|
|||
CREATE INDEX IF NOT EXISTS user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions (user_id, session_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS pages_session_id_timestamp_idx ON events.pages (session_id, timestamp);
|
||||
|
||||
CREATE INDEX ON events.errors (timestamp);
|
||||
CREATE INDEX ON public.projects (project_key);
|
||||
END;
|
||||
|
|
@ -108,7 +108,7 @@ $$
|
|||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
-- --- accounts.sql ---
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.tenants
|
||||
CREATE TABLE tenants
|
||||
(
|
||||
tenant_id integer NOT NULL DEFAULT 1,
|
||||
user_id text NOT NULL DEFAULT generate_api_key(20),
|
||||
|
|
@ -256,6 +256,7 @@ $$
|
|||
}'::jsonb -- ??????
|
||||
);
|
||||
|
||||
CREATE INDEX ON public.projects (project_key);
|
||||
CREATE TRIGGER on_insert_or_update
|
||||
AFTER INSERT OR UPDATE
|
||||
ON projects
|
||||
|
|
@ -780,6 +781,7 @@ $$
|
|||
PRIMARY KEY (session_id, message_id)
|
||||
);
|
||||
CREATE INDEX ON events.errors (session_id);
|
||||
CREATE INDEX ON events.errors (timestamp);
|
||||
CREATE INDEX errors_session_id_timestamp_error_id_idx ON events.errors (session_id, timestamp, error_id);
|
||||
CREATE INDEX errors_error_id_timestamp_idx ON events.errors (error_id, timestamp);
|
||||
CREATE INDEX errors_timestamp_error_id_session_id_idx ON events.errors (timestamp, error_id, session_id);
|
||||
|
|
@ -836,6 +838,8 @@ $$
|
|||
CREATE INDEX ON events.resources (type);
|
||||
CREATE INDEX ON events.resources (duration) WHERE duration > 0;
|
||||
CREATE INDEX ON events.resources (url_host);
|
||||
CREATE INDEX ON events.resources (timestamp);
|
||||
CREATE INDEX ON events.resources (success);
|
||||
|
||||
CREATE INDEX resources_url_gin_idx ON events.resources USING GIN (url gin_trgm_ops);
|
||||
CREATE INDEX resources_url_idx ON events.resources (url);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue