Hi, hackers
Currently, PostgreSQL permits creating multiple indexes on the same columns
in the same order for a table, potentially leading to redundant indexes.
For example:
CREATE INDEX ON t(id);
CREATE INDEX ON t(id);
While permitted, this leads to:
- Increased storage consumption
- Performance degradation (for data modification)
- Maintenance overhead
- Potential query optimizer confusion
Oracle prevents this with an error like ORA-01408: such column list already
indexed [1].
I propose that PostgreSQL prevent redundant index creation by:
- Checking for identical existing indexes during CREATE INDEX.
- Failing with an error (like Oracle's ORA-01408) if a duplicate is found.
- Providing a GUC parameter (allow_redundant_indexes) to control this.
This change would:
- Prevent accidental redundancy
- Optimize storage
- Improve performance
- Simplify maintenance
- Enhance efficiency and user flexibility
I’d love to hear your feedback or suggestions for improvement.
[1] https://docs.oracle.com/en/error-help/db/ora-01408/?r=19c
--
Regrads,
Japin Li