On 23/03/2018 09:55, Thomas Poty wrote:
Hi all, I am migrating fromMySQL to Postgresql 9.6. In MySQL a "show create table" gives me : ... PRIMARY KEY (`ID`,`CountryCode`,`LanguageCode`), UNIQUE KEY `unique_my table_4` (`ID`,`CountryCode`,`LanguageCode`), ... So, In PostgreSQL, does it make sense to create a primary key AND a unique index based on the same columns? Is PostgreSQL smart enough to use the unique index created for the primary key.
This is redundant. However, IMO it is always beneficial to have an bigint PK, set implicitly via a sequence. So you could have smth like : pkid BIGSERIAL PRIMARY KEY, ....... UNIQUE KEY unique_my table_4 ("ID","CountryCode","LanguageCode"), ... This way, you get the artificial bigint PK (pkid), and the explicit natural unique key which enforces your business integrity.
I know PostgreSQL can be based on a unique index to create a primary key but I also know it is possible to create several indexes on the same columns with the same order. Thanks Thomas
-- Achilleas Mantzios IT DEV Lead IT DEPT Dynacom Tankers Mgmt