Meenatchi Sandanam wrote: > I have created a table with 301 columns(ID, 150 BIGINT, 150 TEXT). The table > contains > multiple form data differentiated by ID range. Hence a column contains more > than one form data. > To achieve Unique Constraint and Indexing per form, I chose PostgreSQL > Partial Indexes > which suits my requirement. I have created Partial Indexes with ID Range as > criteria and > it provides Uniqueness and Indexing per form basis as expected. But DML > operations on a > particular form scans all the Indexes created for the entire table instead of > scanning > the Indexes created for that particular form ID Range. This degrades Planner > Performance > and Query Time more than 10 times as below, > > Query Result for the table with 3000 Partial Indexes(15 Indexes per form) :
It is crazy to create 3000 partial indexes on one table. No wonder planning and DML statements take very long, they have to consider all the indexes. > explain analyse select id from form_data_copy where id between 3001 and 4000 > and bigint50=789; Use a single index on (bigint50, id) for best performance. Yours, Laurenz Albe -- Cybertec | https://www.cybertec-postgresql.com