53 lines
1.7 KiB
Elixir
53 lines
1.7 KiB
Elixir
defmodule Aprsme.Repo.Migrations.RemoveDuplicateIndexes do
|
|
use Ecto.Migration
|
|
|
|
def up do
|
|
# Remove duplicate indexes to save 2.9GB of disk space
|
|
|
|
# 1. Remove packets_id_idx (1324 MB) - redundant with primary key packets_pkey
|
|
# The primary key already provides an index on the id column
|
|
execute("DROP INDEX IF EXISTS packets_id_idx")
|
|
|
|
# 2. Remove packets_location_spatial_idx (1060 MB) - redundant with packets_location_selective_idx
|
|
# The selective index is more specific and provides better performance
|
|
execute("DROP INDEX IF EXISTS packets_location_spatial_idx")
|
|
|
|
# 3. Remove packets_received_at_index (550 MB) - redundant with packets_received_at_idx
|
|
# Both indexes serve the same purpose
|
|
execute("DROP INDEX IF EXISTS packets_received_at_index")
|
|
|
|
# Also check for other potential duplicates mentioned in earlier migrations
|
|
# Replaced by more specific indexes
|
|
execute("DROP INDEX IF EXISTS packets_location_idx")
|
|
|
|
# Log the cleanup
|
|
execute("""
|
|
DO $$
|
|
BEGIN
|
|
RAISE NOTICE 'Duplicate indexes removed successfully. Estimated space saved: ~2.9GB';
|
|
END $$;
|
|
""")
|
|
end
|
|
|
|
def down do
|
|
# Recreate indexes if needed (though they are redundant)
|
|
|
|
# Recreate packets_id_idx
|
|
execute("""
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS packets_id_idx
|
|
ON packets(id)
|
|
""")
|
|
|
|
# Recreate packets_location_spatial_idx
|
|
execute("""
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS packets_location_spatial_idx
|
|
ON packets USING GIST (location)
|
|
""")
|
|
|
|
# Recreate packets_received_at_index (using original name from migration)
|
|
execute("""
|
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS packets_received_at_index
|
|
ON packets(received_at)
|
|
""")
|
|
end
|
|
end
|