Ինչ տեսակների ինդեքսներ կան PostgreSQL-ում։
sobes.tech AI
Պատասխան AI-ից
Տեղեկատվական ցուցակների հիմնական տեսակները:
-
B-կաղապար (B-պատկեր) - ամենատարածված տեսակ, հարմար է մեծ մասի սովորական հարցումների համար (հավասարություն, համեմատություն, տիրույթ). Հիմնված է հավասարակշռված ծառի վրա:
-
Hash (Հեշ) - օգտագործվում է հավասարության (=) ստուգման համար: Ավելի արագ է, քան B-կաղապարը նման հարցումների համար, բայց չի աջակցում համեմատություններ և տիրույթներ: Պահում է բանալիի հեշ-արժեքը և հղում տողին:
-
GiST (Generalized Search Tree) - ընդհանուր որոնման ծառի կառուցվածք, թույլ է տալիս կառուցել տարբեր ինդեքսներ բարդ տվյալների տեսակների համար (գեոմետրիական, տեքստային՝ լրիվ տեքստային որոնմամբ): Հիմնված է հավասարակշռված ծառի վրա:
-
SP-GiST (Space-Partitioned Generalized Search Tree) - հատուկ տարբերակ GiST-ի համար տվյալների, որոնք կարող են բաժանվել տարածության վրա (օրինակ, կետեր, ուղղանկյուններ): Օրինակներ՝ k-d ծառեր, quadtree:
-
GIN (Generalized Inverted Index) - ընդհանուր հակադարձ ինդեքս, հիմնականում օգտագործվում է բաղադրիչ արժեքների ներսում տարրեր որոնելու համար (օրինակ, զանգվածներ, JSONB): Շատ օգտագործվում է լրիվ տեքստային որոնման համար:
-
BRIN (Block Range INdex) - բլոկների տիրույթի ինդեքս: Հարմար է շատ մեծ աղյուսակների համար, որոնք բնականորեն դասավորված են տվյալներով (օրինակ՝ ժամանակով): Ինդեքսավորում է ֆիզիկական բլոկների արժեքների տիրույթը:
-
Bloom (Bloom filter) - ոչ այնքան ավանդական ինդեքս, այլ հավանականության կառուցվածք արագ ստուգելու համար, արդյոք տարր չկա: Օգտագործվում է շատ մեծ աղյուսակներից արագ ընտրության համար, երբ ճշգրիտ համընկնումը անհրաժեշտ չէ կամ որպես լրացուցիչ ֆիլտր նախքան հիմնական ինդեքսի սկանավորումը:
Օգտագործման օրինակներ:
- B-կաղապար: ինդեքս թվային դաշտերի, ամսաթվերի, տողերի համար՝ որոնում տիրույթում (
WHERE amount > 100): - Hash: հազվադեպ օգտագործվում է ուղղակիորեն, քանի որ B-կաղապարը սովորաբար ավելի արագ է:
- GiST: աշխարհագրական ինդեքսներ (
gist(location)), լրիվ տեքստային որոնման ինդեքսներ (to_tsvector): - SP-GiST: երկչափ տվյալների ինդեքսներ (
spgist(point)): - GIN: զանգվածների ինդեքսներ (
gin(tags)), JSONB (gin(data)), լրիվ տեքստային որոնում: - BRIN: ինդեքս
timestampդաշտի համար՝ լոգների աղյուսակում, որտեղ տվյալները դասավորված են ժամանակով: - Bloom: ինդեքս սյունակների հավաքածուի համար (
bloom(col1, col2, col3)), արագորեն մերժելու համար տողերը, որտեղ արժեքների համադրությունը հաստատապես չկա:
Ինքնության ընտրությունը կախված է սյունակի տվյալների տեսակից և այն հարցերի տեսակից, որոնք պետք է օպտիմալացվեն։