Query goal: | Find partial or case insensitive unique indexes. These implement uniqueness constraints that are impossible to enforce with the help of SQL's regular UNIQUE constraint. |
Notes about the query: | The query uses a system view and returns CREATE INDEX statements. |
Query type: | General (Overview of some aspect of the database.) |
Query license: | MIT License |
Data source: | INFORMATION_SCHEMA+system catalog |
SQL query: | Click on query to copy it
SELECT schemaname, tablename, indexname, indexdef FROM pg_catalog.pg_indexes WHERE indexdef LIKE 'CREATE UNIQUE INDEX%' AND (indexdef LIKE '% WHERE %' OR indexdef LIKE '%(upper(%' OR indexdef LIKE '%(lower(%') AND schemaname NOT IN (SELECT schema_name FROM INFORMATION_SCHEMA.schemata WHERE schema_name<>'public' AND schema_owner='postgres' AND schema_name IS NOT NULL) ORDER BY schemaname, tablename, indexname; |
Collection name | Collection description |
---|---|
Find problems by overview | Queries that results point to different aspects of database that might have problems. A human reviewer has to decide based on the results as to whether there are problems or not . |
Category name | Category description |
---|---|
Case sensitivity vs. case insensitivity | Queries of this category provide information about case sensitivity/insensitivity of identifiers or user data. |
Performance | Queries of this category provide information about indexes in a database. |
Uniqueness | Queries of this category provide information about uniqueness constraints (PRIMARY KEY, UNIQUE, EXCLUDE) as well as unique indexes. |
Validity and completeness | Queries of this category provide information about whether database design represents the world (domain) correctly (validity) and whether database design captures all the information about the world (domain) that is correct and relevant (completeness). |