Replace DROP INDEX with IF NOT EXISTS

This commit is contained in:
MartinBraquet
2025-10-23 00:34:34 +02:00
parent b8b95be5ce
commit 0415d86d71
11 changed files with 23 additions and 54 deletions

View File

@@ -30,12 +30,10 @@ END$$;
ALTER TABLE private_user_message_channel_members ENABLE ROW LEVEL SECURITY;
-- Indexes
DROP INDEX IF EXISTS pumcm_members_idx;
CREATE INDEX pumcm_members_idx
CREATE INDEX IF NOT EXISTS pumcm_members_idx
ON public.private_user_message_channel_members
USING btree (channel_id, user_id);
DROP INDEX IF EXISTS unique_user_channel;
CREATE UNIQUE INDEX unique_user_channel
CREATE UNIQUE INDEX IF NOT EXISTS unique_user_channel
ON public.private_user_message_channel_members
USING btree (channel_id, user_id);

View File

@@ -16,7 +16,5 @@ CREATE TABLE IF NOT EXISTS private_user_messages (
ALTER TABLE private_user_messages ENABLE ROW LEVEL SECURITY;
-- Indexes
DROP INDEX IF EXISTS private_user_messages_channel_id_idx;
CREATE INDEX IF NOT EXISTS private_user_messages_channel_id_idx
ON public.private_user_messages USING btree (channel_id, created_time DESC);

View File

@@ -47,8 +47,6 @@ FOR SELECT
);
-- Indexes
DROP INDEX IF EXISTS user_seen_private_messages_created_time_desc_idx;
CREATE INDEX user_seen_private_messages_created_time_desc_idx
CREATE INDEX IF NOT EXISTS user_seen_private_messages_created_time_desc_idx
ON public.private_user_seen_message_channels
USING btree (user_id, channel_id, created_time DESC);

View File

@@ -17,9 +17,6 @@ FOR SELECT USING (true);
-- Indexes
-- Primary key automatically creates a unique index on (creator_id, ship_id), so no need to recreate it.
-- Keep additional indexes for query optimization:
DROP INDEX IF EXISTS profile_ships_target1_id;
CREATE INDEX profile_ships_target1_id ON public.profile_ships USING btree (target1_id);
CREATE INDEX IF NOT EXISTS profile_ships_target1_id ON public.profile_ships USING btree (target1_id);
DROP INDEX IF EXISTS profile_ships_target2_id;
CREATE INDEX profile_ships_target2_id ON public.profile_ships USING btree (target2_id);
CREATE INDEX IF NOT EXISTS profile_ships_target2_id ON public.profile_ships USING btree (target2_id);

View File

@@ -16,6 +16,4 @@ FOR SELECT USING (true);
-- Indexes
-- The primary key already creates a unique index on (creator_id, star_id), so no need to recreate it.
DROP INDEX IF EXISTS profile_stars_target_id_idx;
CREATE INDEX profile_stars_target_id_idx ON public.profile_stars USING btree (target_id);
CREATE INDEX IF NOT EXISTS profile_stars_target_id_idx ON public.profile_stars USING btree (target_id);

View File

@@ -69,11 +69,9 @@ FOR UPDATE
WITH CHECK ((user_id = firebase_uid()));
-- Indexes
DROP INDEX IF EXISTS profiles_user_id_idx;
CREATE INDEX profiles_user_id_idx ON public.profiles USING btree (user_id);
CREATE INDEX IF NOT EXISTS profiles_user_id_idx ON public.profiles USING btree (user_id);
DROP INDEX IF EXISTS unique_user_id;
CREATE UNIQUE INDEX unique_user_id ON public.profiles USING btree (user_id);
CREATE UNIQUE INDEX IF NOT EXISTS unique_user_id ON public.profiles USING btree (user_id);
CREATE INDEX IF NOT EXISTS idx_profiles_last_mod_24h
ON public.profiles USING btree (last_modification_time);
@@ -82,13 +80,10 @@ CREATE INDEX IF NOT EXISTS idx_profiles_bio_length
ON profiles (bio_length);
-- Fastest general-purpose index
DROP INDEX IF EXISTS profiles_lat_lon_idx;
CREATE INDEX profiles_lat_lon_idx ON profiles (city_latitude, city_longitude);
CREATE INDEX IF NOT EXISTS profiles_lat_lon_idx ON profiles (city_latitude, city_longitude);
-- Optional additional index for large tables / clustered inserts
DROP INDEX IF EXISTS profiles_lat_lon_brin_idx;
CREATE INDEX profiles_lat_lon_brin_idx ON profiles USING BRIN (city_latitude, city_longitude) WITH (pages_per_range = 32);
CREATE INDEX IF NOT EXISTS profiles_lat_lon_brin_idx ON profiles USING BRIN (city_latitude, city_longitude) WITH (pages_per_range = 32);
-- Functions and Triggers

View File

@@ -10,11 +10,8 @@ create table push_subscriptions (
ALTER TABLE push_subscriptions ENABLE ROW LEVEL SECURITY;
-- Indexes
DROP INDEX IF EXISTS user_id_idx;
CREATE INDEX user_id_idx ON push_subscriptions (user_id);
CREATE INDEX IF not exists user_id_idx ON push_subscriptions (user_id);
DROP INDEX IF EXISTS endpoint_idx;
CREATE INDEX endpoint_idx ON push_subscriptions (endpoint);
CREATE INDEX IF not exists endpoint_idx ON push_subscriptions (endpoint);
DROP INDEX IF EXISTS endpoint_user_id_idx;
CREATE INDEX endpoint_user_id_idx ON push_subscriptions (endpoint, user_id);
CREATE INDEX IF not exists endpoint_user_id_idx ON push_subscriptions (endpoint, user_id);

View File

@@ -18,20 +18,16 @@ ALTER TABLE users ENABLE ROW LEVEL SECURITY;
-- Policies
DROP POLICY IF EXISTS "public read" ON users;
CREATE POLICY "public read" ON users
FOR SELECT
USING (true);
-- Indexes
DROP INDEX IF EXISTS user_username_idx;
CREATE INDEX user_username_idx ON public.users USING btree (username);
CREATE INDEX IF NOT EXISTS user_username_idx ON public.users USING btree (username);
DROP INDEX IF EXISTS users_created_time;
CREATE INDEX users_created_time ON public.users USING btree (created_time DESC);
CREATE INDEX IF NOT EXISTS users_created_time ON public.users USING btree (created_time DESC);
DROP INDEX IF EXISTS users_name_idx;
CREATE INDEX users_name_idx ON public.users USING btree (name);
CREATE INDEX IF NOT EXISTS users_name_idx ON public.users USING btree (name);
-- Remove these if you trust PRIMARY KEY auto-index:
-- DROP INDEX IF EXISTS users_pkey;

View File

@@ -1 +0,0 @@

View File

@@ -24,20 +24,15 @@ CREATE POLICY "public read" ON vote_results
FOR ALL USING (true);
-- Indexes
DROP INDEX IF EXISTS user_id_idx;
CREATE INDEX user_id_idx ON vote_results (user_id);
CREATE INDEX IF NOT EXISTS user_id_idx ON vote_results (user_id);
DROP INDEX IF EXISTS vote_id_idx;
CREATE INDEX vote_id_idx ON vote_results (vote_id);
CREATE INDEX IF NOT EXISTS vote_id_idx ON vote_results (vote_id);
DROP INDEX IF EXISTS idx_vote_results_vote_choice;
CREATE INDEX idx_vote_results_vote_choice ON vote_results (vote_id, choice);
CREATE INDEX IF NOT EXISTS idx_vote_results_vote_choice ON vote_results (vote_id, choice);
DROP INDEX IF EXISTS idx_vote_results_vote_choice_priority;
CREATE INDEX idx_vote_results_vote_choice_priority ON vote_results (vote_id, choice, priority);
CREATE INDEX IF NOT EXISTS idx_vote_results_vote_choice_priority ON vote_results (vote_id, choice, priority);
DROP INDEX IF EXISTS idx_votes_created_time;
CREATE INDEX idx_votes_created_time ON votes (created_time DESC);
CREATE INDEX IF NOT EXISTS idx_votes_created_time ON votes (created_time DESC);
drop function if exists get_votes_with_results;

View File

@@ -20,8 +20,6 @@ CREATE POLICY "public read" ON votes
FOR ALL USING (true);
-- Indexes
DROP INDEX IF EXISTS creator_id_idx;
CREATE INDEX creator_id_idx ON votes (creator_id);
CREATE INDEX IF NOT EXISTS creator_id_idx ON votes (creator_id);
DROP INDEX IF EXISTS idx_votes_created_time;
CREATE INDEX idx_votes_created_time ON votes (created_time DESC);
CREATE INDEX IF NOT EXISTS idx_votes_created_time ON votes (created_time DESC);