BanglaTech

© 2026 Bangla Technologies. সর্বস্বত্ব সংরক্ষিত.

একটিNerddevs Ltd-এর প্রোডাক্ট
হোমঅনুসন্ধানআমাদের সম্পর্কেটিউটোরিয়ালশিক্ষকদের জন্যকোচিং সেন্টারের জন্যগোপনীয়তা নীতিসেবার শর্তাবলি

In PostgreSQL, GIN index

a
admin
March 21, 2026 · 120 views
~2 মিনিট পড়তে
16px

In PostgreSQL, a GIN index stands for Generalized Inverted Index. It is a special type of index designed for searching inside composite values like arrays, JSONB, full-text documents, etc.

It is very useful when one column contains multiple values and you want to search inside those values efficiently.


  1. Simple Idea

Normally, a B-tree index works like this:

ValueRowapplerow1bananarow2

But sometimes one column contains multiple elements, for example:

["apple", "banana", "orange"]

A GIN index breaks these values into pieces and indexes each piece.

So internally it becomes something like:

ElementRowsapplerow1, row5bananarow1, row3orangerow1

This makes searching very fast.


  1. Example with JSONB

Suppose we have a table like:

CREATE TABLE permissions (
  id UUID,
  permissionToggles JSONB
);

Example data:

{
  "viewReports": true,
  "exportReports": false
}

If you want to query:

SELECT *

FROM permissions

WHERE permissionToggles @> '{"viewReports": true}';

Without an index → full table scan.

With GIN index:

CREATEINDEXidxpermissionsCREATE INDEX idx_permissionsCREATEINDEXidxp​ermissions

ON permissions

USING GIN (permissionToggles);

Now PostgreSQL can search inside the JSON efficiently.


  1. Example with Arrays

Table:

CREATE TABLE articles (
  id SERIAL,
  tags TEXT[]
);

Example:

{"tech", "javascript", "backend"}

Query:

SELECT *

FROM articles

WHERE tags @> ARRAY['javascript'];

Create GIN index:

CREATEINDEXidxtagsCREATE INDEX idx_tagsCREATEINDEXidxt​ags

ON articles

USING GIN (tags);

Now searching tags becomes very fast.


  1. Example with Full-Text Search

GIN is heavily used for PostgreSQL full-text search.

CREATEINDEXidxdocsCREATE INDEX idx_docsCREATEINDEXidxd​ocs

ON documents

USINGGIN(totsvector(′english′,content));USING GIN (to_tsvector('english', content));USINGGIN(tot​svector(′english′,content));

Query:

SELECT *

FROM documents

WHEREtotsvector(′english′,content)WHERE to_tsvector('english', content)WHEREtot​svector(′english′,content)

@@ to_tsquery('postgres');


  1. When to Use GIN Index

Use GIN when working with:

  • JSONB

  • Arrays

  • Full text search

  • hstore

  • composite data

Typical operators:

@> contains

<@ contained by

? key exists

@@ full text match


  1. Trade-offs

Advantages:

✅ Very fast for searching inside JSON / arrays

✅ Excellent for full-text search

Disadvantages:

❌ Slower inserts/updates (index maintenance cost)

❌ Uses more disk space


✅ Simple summary

IndexBest ForB-Treeequality, range queriesGINJSONB, arrays, full-textGiSTgeometric / advancedHashequality only

আরও দেখুন

🏆
কুইজ প্রতিযোগিতায় অংশ নিন
ফ্রি অনলাইন কুইজ, জিতুন পুরস্কার।
✏️
নিজে কুইজ তৈরি করুন
শিক্ষক ও টিউটরদের জন্য ফ্রি টুলস।
✨
BanglaTech সম্পর্কে
আমাদের গল্প ও মিশন।

Comments (0)

Login to leave a comment.