Database Tutorials Partial Indexing এবং Function-based Indexes গাইড ও নোট

300

PostgreSQL ডেটাবেসে Partial Indexing এবং Function-based Indexes দুটি শক্তিশালী বৈশিষ্ট্য রয়েছে যা কুয়েরি পারফরম্যান্স উন্নত করতে সাহায্য করে। এগুলি বিশেষ ধরনের ইনডেক্স যা ডেটার একটি সাবসেট বা কাস্টম ফাংশন ব্যবহারের মাধ্যমে কার্যকরী হয়, ফলে আপনার ডেটাবেসের অনুসন্ধান আরও দ্রুত এবং দক্ষ হয়।


1. Partial Indexing

Partial Indexing হল একটি ইনডেক্স যা টেবিলের শুধুমাত্র একটি অংশ (অথবা নির্দিষ্ট শর্ত অনুসারে) ইনডেক্স করে। এটি সাধারণ ইনডেক্সের তুলনায় কম স্থান ব্যবহার করে এবং কেবলমাত্র প্রয়োজনীয় ডেটা ত্বরান্বিত করতে সাহায্য করে। সাধারণত, যদি কোনও টেবিলের কিছু রেকর্ড নিয়মিতভাবে অনুসন্ধান করা হয় এবং বাকিরা অনেক কম, তবে partial index ব্যবহার করা হয়।

Partial Indexing এর সুবিধা

  • স্পেস সাশ্রয়: শুধুমাত্র নির্দিষ্ট শর্ত পূরণ করা রেকর্ডগুলোর উপর ইনডেক্স তৈরি করা হয়, ফলে সম্পূর্ণ টেবিল ইনডেক্স করার চেয়ে অনেক কম জায়গা ব্যবহার হয়।
  • পারফরম্যান্স বৃদ্ধি: একটি নির্দিষ্ট শর্তের অধীনে ডেটার দ্রুত অনুসন্ধান করার জন্য এটি খুবই কার্যকর।

Partial Indexing এর উদাহরণ

ধরা যাক, আমাদের একটি orders টেবিল রয়েছে এবং আমরা কেবলমাত্র status কলামের মান active এর জন্য ইনডেক্স তৈরি করতে চাই, কারণ এই রেকর্ডগুলো সবচেয়ে বেশি অনুসন্ধান করা হয়।

CREATE INDEX active_orders_idx 
ON orders (order_id)
WHERE status = 'active';

এটি orders টেবিলের status = 'active' শর্ত পূরণকারী রেকর্ডগুলির উপর ইনডেক্স তৈরি করবে। ফলে, যেকোনো কুয়েরি যেখানে status = 'active' শর্ত থাকবে, তা দ্রুত সম্পাদিত হবে।


2. Function-based Indexes

Function-based Indexes হল এমন ইনডেক্স যা কোনও কলামের মানে একটি ফাংশন প্রয়োগ করে তৈরি হয়। সাধারণত, আপনি যদি কলামের উপর নির্দিষ্ট কোনও ক্যালকুলেশন বা রূপান্তর করতে চান এবং সেই রূপান্তরকৃত ডেটা অনুসন্ধান করতে চান, তবে ফাংশন-ভিত্তিক ইনডেক্স ব্যবহার করা হয়।

Function-based Indexes এর সুবিধা

  • ডেটা রূপান্তরের উপর দ্রুত অনুসন্ধান: যদি আপনি কলামের মানে কোনো ফাংশন প্রয়োগ করেন এবং সেই রূপান্তরিত ডেটা অনুসন্ধান করতে চান, তবে এটি কুয়েরির পারফরম্যান্স উন্নত করে।
  • কাস্টম ফাংশন ব্যবহার: PostgreSQL এর যেকোনো ফাংশন ব্যবহার করে ইনডেক্স তৈরি করা যায়, যেমন ম্যাথেমেটিক্যাল ফাংশন, স্ট্রিং ফাংশন ইত্যাদি।

Function-based Indexes এর উদাহরণ

ধরা যাক, আমাদের একটি users টেবিল রয়েছে এবং আমরা email কলামের ওপর ছোট হাতের অক্ষর (lowercase) ফাংশন প্রয়োগ করে অনুসন্ধান করতে চাই। যেহেতু ইমেইলটি ছোট হাতের অক্ষরে চেক করা হবে, তাই আমাদের lower() ফাংশন ব্যবহার করে একটি ইনডেক্স তৈরি করা উচিত।

CREATE INDEX lower_email_idx
ON users (LOWER(email));

এটি email কলামের মানের ওপর LOWER() ফাংশন প্রয়োগ করে ইনডেক্স তৈরি করবে, ফলে আপনি যেকোনো LOWER(email) ফাংশন ব্যবহৃত কুয়েরি খুব দ্রুত কার্যকরী করতে পারবেন।

আরেকটি উদাহরণ:

ধরা যাক, আপনি একটি টেবিলের birth_date কলাম থেকে বছর বের করে ইনডেক্স তৈরি করতে চান। এটি করতে পারেন:

CREATE INDEX birth_year_idx
ON users (EXTRACT(YEAR FROM birth_date));

এটি birth_date কলামের থেকে YEAR বের করার জন্য একটি ইনডেক্স তৈরি করবে এবং ভবিষ্যতে যখন আপনি birth_date থেকে বছর নির্ধারণ করে কুয়েরি করবেন, তখন সেটি দ্রুত কার্যকরী হবে।


সারাংশ

  • Partial Indexing: এটি একটি ইনডেক্স যা শুধুমাত্র নির্দিষ্ট শর্তে থাকা ডেটার জন্য তৈরি করা হয়, যা ডিস্ক স্পেস সাশ্রয় করে এবং নির্দিষ্ট শর্তের জন্য অনুসন্ধান দ্রুত করে।
  • Function-based Indexes: এটি একটি ইনডেক্স যা কোনো কলামের উপর ফাংশন প্রয়োগ করে তৈরি হয়। এটি কাস্টম ফাংশন ব্যবহার করে ডেটার রূপান্তরিত মান অনুসন্ধান করতে সাহায্য করে এবং কুয়েরির পারফরম্যান্স উন্নত করে।

এই দুটি ধরনের ইনডেক্স PostgreSQL এর পারফরম্যান্স উন্নত করার জন্য অত্যন্ত কার্যকরী, বিশেষ করে যখন আপনার ডেটাবেসে বড় আকারের ডেটা থাকে এবং আপনাকে দ্রুত অনুসন্ধান নিশ্চিত করতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...