Ես ուզում եմ ինդեքսներ ավելացնել ստեղծման վերաբերյալ աղյուսակի որոշ սյունակներում: Արդյո՞ք կա դրանք «ՍՏԵՂԾԵԼ ՍԵՂԱՆԻ» սահմանմանը ավելացնելու միջոց, թե՞ պետք է դրանք ավելացնեմ այլ հարցմամբ:
CREATE INDEX reply_user_id ON reply USING btree (user_id);
Ես ուզում եմ ինդեքսներ ավելացնել ստեղծման վերաբերյալ աղյուսակի որոշ սյունակներում: Արդյո՞ք կա դրանք «ՍՏԵՂԾԵԼ ՍԵՂԱՆԻ» սահմանմանը ավելացնելու միջոց, թե՞ պետք է դրանք ավելացնեմ այլ հարցմամբ:
CREATE INDEX reply_user_id ON reply USING btree (user_id);
Թվում է, թե CREATE TABLE
շարահյուսությունում ինդեքս նշելու որևէ ձև չկա: Այնուամենայնիվ, PostgreSQL-ը լռելյայն ստեղծում է եզակի սահմանափակումների և հիմնական բանալիների ինդեքս, ինչպես նկարագրված է այս նշումը:
PostgreSQL-ն ավտոմատ կերպով ստեղծում է ինդեքս յուրաքանչյուր եզակի սահմանափակումների և հիմնական բանալիների սահմանափակումների համար՝ եզակիությունն ապահովելու համար:
Բացի դրանից, եթե ցանկանում եք ոչ եզակի ինդեքս, ապա ձեզ հարկավոր է ինքնուրույն ստեղծել այն առանձին CREATE INDEX
հարցումով:
No.
Այնուամենայնիվ, դուք կարող եք ստեղծել unique
ինդեքսներ ստեղծման մեջ, բայց դա պայմանավորված է նրանով, որ դրանք դասակարգվում են որպես սահմանափակումներ: Դուք չեք կարող ստեղծել «ընդհանուր» ինդեքս:
Պիտեր Քրաուսը կանոնական պատասխան է փնտրում.
Գոյություն ունի ԺԱՄԱՆԱԿԱԿԻՑ ՍԻՆՏԱՔՍ (2020 թ.), ուստի խնդրում ենք բացատրել և ցույց տալ օրինակներ, որոնք համատեղելի են postgresql.org/docs/current/sql-createtable.html-ի հետ։
Դուք փնտրում եք ինդեքսի սահմանում, որը հասանելի չէ PostgreSQL-ի համար մինչև ընթացիկ տարբերակ 12-ը:
[CONTRAINT constraint_name] {ՍՏՈՒԳՈՒՄ (արտահայտություն) [ՉԻ ԺԱՌԱՆԳՎԵԼ] | ՅՈՒՐԱՔԱԿԱՆ ( սյունակի_անուն [, ... ] ) ինդեքս_պարամետրեր | ՀԻՄՆԱԿԱՆ ԲԱՆԱԼ ( սյունակի_անուն [, ... ] ) index_parameters |
Ներդիր սյունակի սահմանման օրինակելի շարահյուսությունը (այստեղ SQL Server).
CREATE TABLE tab(
id INT PRIMARY KEY, -- constraint
c INT INDEX filtered (c) WHERE c > 10, -- filtered index
b VARCHAR(10) NOT NULL INDEX idx_tab_b, -- index on column
d VARCHAR(20) NOT NULL,
INDEX my_index NONCLUSTERED(d) -- index on column as separate entry
);
Դրանց ներկայացման հիմքում ընկած հիմնավորումը բավականին հետաքրքիր է Ի՞նչ են ներկառուցված ինդեքսները: Phil Factorի կողմից
b VARCHAR(10) NOT NULL INDEX idx_tab_b gin (b gin_trgm_ops)
.. ինչպե՞ս ավելացնել ավելի շատ պարամետրեր առանց կրկնվող սյունակի անվանման: 20.03.2020 CREATE INDEX idxName ON tableName USING MethodName (fieldName optionName);
բարդ շարահյուսություն ներդիր ինդեքսի սահմանման: Հ.Գ. այս հարցը վերաբերում է PostgreSQL-ին, ոչ թե Microsoft-SQL-Server-ին (տես պիտակները): 21.03.2020