PostgreSQLの PRIMARY KEYとUNIQUE INDEXは、一意制約だけではなく INDEX機能も有しているので、PRIMARY KEYとUNIQUE INDEXの対象列に、INDEXを追加する必要はない。
SQLServer、Oracle、MySQLと同じ。
無駄にインデックスを追加した例。
「idx_m_table_a_1」インデックスが無駄。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
-- Table: public.m_table_a -- DROP TABLE IF EXISTS public.m_table_a; CREATE TABLE IF NOT EXISTS public.m_table_a ( id bigint NOT NULL, value_string text COLLATE pg_catalog."default", value_date date, CONSTRAINT m_table_a_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE IF EXISTS public.m_table_a OWNER to testuser; -- Index: idx_m_table_a_1 -- DROP INDEX IF EXISTS public.idx_m_table_a_1; CREATE INDEX IF NOT EXISTS idx_m_table_a_1 ON public.m_table_a USING btree (value_string COLLATE pg_catalog."default" ASC NULLS LAST) TABLESPACE pg_default; -- Index: uidx_m_table_a_1 -- DROP INDEX IF EXISTS public.uidx_m_table_a_1; CREATE UNIQUE INDEX IF NOT EXISTS uidx_m_table_a_1 ON public.m_table_a USING btree (value_string COLLATE pg_catalog."default" ASC NULLS LAST) TABLESPACE pg_default; |
コメント