Sobes.tech
Middle

Ինչ տեսակների ինդեքսներ կան PostgreSQL-ում։

sobes.tech AI

Պատասխան AI-ից

Տեղեկատվական ցուցակների հիմնական տեսակները:

  1. B-կաղապար (B-պատկեր) - ամենատարածված տեսակ, հարմար է մեծ մասի սովորական հարցումների համար (հավասարություն, համեմատություն, տիրույթ). Հիմնված է հավասարակշռված ծառի վրա:

  2. Hash (Հեշ) - օգտագործվում է հավասարության (=) ստուգման համար: Ավելի արագ է, քան B-կաղապարը նման հարցումների համար, բայց չի աջակցում համեմատություններ և տիրույթներ: Պահում է բանալիի հեշ-արժեքը և հղում տողին:

  3. GiST (Generalized Search Tree) - ընդհանուր որոնման ծառի կառուցվածք, թույլ է տալիս կառուցել տարբեր ինդեքսներ բարդ տվյալների տեսակների համար (գեոմետրիական, տեքստային՝ լրիվ տեքստային որոնմամբ): Հիմնված է հավասարակշռված ծառի վրա:

  4. SP-GiST (Space-Partitioned Generalized Search Tree) - հատուկ տարբերակ GiST-ի համար տվյալների, որոնք կարող են բաժանվել տարածության վրա (օրինակ, կետեր, ուղղանկյուններ): Օրինակներ՝ k-d ծառեր, quadtree:

  5. GIN (Generalized Inverted Index) - ընդհանուր հակադարձ ինդեքս, հիմնականում օգտագործվում է բաղադրիչ արժեքների ներսում տարրեր որոնելու համար (օրինակ, զանգվածներ, JSONB): Շատ օգտագործվում է լրիվ տեքստային որոնման համար:

  6. BRIN (Block Range INdex) - բլոկների տիրույթի ինդեքս: Հարմար է շատ մեծ աղյուսակների համար, որոնք բնականորեն դասավորված են տվյալներով (օրինակ՝ ժամանակով): Ինդեքսավորում է ֆիզիկական բլոկների արժեքների տիրույթը:

  7. 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)), արագորեն մերժելու համար տողերը, որտեղ արժեքների համադրությունը հաստատապես չկա:

Ինքնության ընտրությունը կախված է սյունակի տվյալների տեսակից և այն հարցերի տեսակից, որոնք պետք է օպտիմալացվեն։