On Tue, 2023-02-14 at 17:53 +0000, Sebastien Flaesch wrote: > When creating an index on multiple columns, does the order of the columns matter? > (I guess so) It does, but not in your case. > It's mostly for SELECT statements using a condition that include ALL columns of the index (pkey): > > SELECT * FROM art WHERE etb='L1' and code='ART345' > > I would naturally put the columns with the most various values first, and > > For example, if the "code" column contains thousands of various item ids like 'SXZ874', > 'ERF345', ... while the "etb" column contains a dozen of values like "L1", "LT" and "BX". > > Which one is best? > > CREATE UNIQUE INDEX ix1 ON art (code, etb) > or > CREATE UNIQUE INDEX ix1 ON art (etb, code) > > (or its PRIMARY KEY equivalent) Both are the same. There is an old myth that says that you should use the moew selective column first (which would be "code"), but that is just a myth. Order makes a difference for queries like "WHERE etb = 'L1' and code LIKE 'ART345'" or "WHERE code = 'ART345' ORDER BY etb", but not for two equality comparisons. > Does it depend on the type of index (Btree, GiST, etc) ? Yes, it does. For B-tree and GiST indexes order matters, for hash, GIN and BRIN indexes it doesn't (for various reasons). Yours, Laurenz Albe -- Cybertec | https://www.cybertec-postgresql.com