ইনডেক্সিং (Indexing) কী?
ইনডেক্সিং হলো ডেটাবেসে একটি ডেটার স্টোরেজ অর্ডার অপটিমাইজ করার পদ্ধতি। MySQLi (MySQL Improved) ডেটাবেসে সঠিক ইনডেক্সিং ব্যবহার করা হলে, কোয়েরি এক্সিকিউশন (query execution) আরও দ্রুত হয়। যখন আপনি একটি টেবিল থেকে কোনো ডেটা বের করার চেষ্টা করেন, ইনডেক্সিং সেই ডেটা দ্রুত খুঁজে পেতে সাহায্য করে।
ইনডেক্সিং কিভাবে কাজ করে?
ইনডেক্স হল একটি ডেটাবেস টেবিলের একটি ডেটা স্ট্রাকচার যা দ্রুত ডেটা অনুসন্ধান (search) বা সার্চ অপারেশন (search operation) করতে সাহায্য করে। এটি একটি পৃষ্ঠা বা ডেটাবেস টেবিলের জন্য "গাইড" হিসেবে কাজ করে, যাতে ডেটা দ্রুত এবং সহজে খুঁজে পাওয়া যায়।
একটি ইনডেক্স টেবিলের কলামগুলোর ওপর তৈরি করা হয়, এবং ইনডেক্স ব্যবহার করে MySQLi দ্রুত সার্চ করতে পারে, কারণ এটি সরাসরি ডেটা সারির মধ্যে নেভিগেট না করে ইনডেক্সের মাধ্যমে উপযুক্ত সারি খুঁজে পায়।
সঠিক ইনডেক্সিংয়ের গুরুত্ব
সঠিকভাবে ইনডেক্স ব্যবহার করা ডেটাবেসের পারফরম্যান্স বাড়াতে সাহায্য করে। যদি ইনডেক্স সঠিকভাবে ব্যবহার না করা হয়, তাহলে কোয়েরি স্লো হয়ে যেতে পারে, কারণ MySQLi ডেটার মধ্যে খোঁজার জন্য পূর্ণ টেবিল স্ক্যান (full table scan) করতে পারে।
কখন ইনডেক্স তৈরি করা উচিত?
- যখন কোনো কলাম প্রায়ই WHERE ক্লজ (WHERE clause) বা JOIN অপারেশনে (JOIN operation) ব্যবহৃত হয়।
- যখন একটি কলামের ওপর ORDER BY বা GROUP BY অপারেশন করা হয়।
- যখন একটি কলাম স্ট্রিং বা অক্ষরের (varchar, char) জন্য ইনডেক্স তৈরি করা হয় এবং সেগুলোর দৈর্ঘ্য বড় নয়।
কখন ইনডেক্স না তৈরি করা উচিত?
- যতটা সম্ভব কম ডেটা পরিবর্তন হয় এমন টেবিলগুলোর ক্ষেত্রে। কারণ ইনডেক্স তৈরি করা এবং রক্ষণাবেক্ষণ (maintenance) করার জন্য অতিরিক্ত সময় ও সম্পদ প্রয়োজন হয়।
- বেশি সংখ্যক কলামের উপর একাধিক ইনডেক্স তৈরি করলে পারফরম্যান্স কমতে পারে, কারণ অনেক ইনডেক্স ডেটাবেসের কাজের গতিকে প্রভাবিত করে।
MySQLi তে ইনডেক্স তৈরি করার পদ্ধতি
MySQLi তে ইনডেক্স তৈরি করার জন্য SQL কোড ব্যবহার করতে হয়। নিচে কিছু সাধারণ উদাহরণ দেওয়া হলো:
সিঙ্গল কলামে ইনডেক্স তৈরি করা
CREATE INDEX index_name ON table_name (column_name);
একাধিক কলামে ইনডেক্স তৈরি করা
CREATE INDEX index_name ON table_name (column1, column2);
প্রাইমারি কী (Primary Key) হিসেবে ইনডেক্স তৈরি করা
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
ইউনিক ইনডেক্স (Unique Index) তৈরি করা
CREATE UNIQUE INDEX index_name ON table_name (column_name);
ইনডেক্সের প্রকারভেদ
প্রাইমারি কী (Primary Key)
প্রাইমারি কী একটি বিশেষ ধরনের ইনডেক্স, যা টেবিলের প্রতিটি সারির জন্য ইউনিক (unique) হতে হবে এবং কোনো NULL মান থাকতে পারবে না।
ইউনিক ইনডেক্স (Unique Index)
ইউনিক ইনডেক্স নিশ্চিত করে যে ইনডেক্স করা কলামে সব মান ইউনিক থাকবে। এর মানে হল যে কোনো দুটি সারি একই মানের হতে পারে না।
নন-ইউনিক ইনডেক্স (Non-Unique Index)
এটি সাধারণ ইনডেক্স যা একাধিক সারিতে একই মান থাকতে পারে, তবে এটি ডেটার অনুসন্ধান দ্রুত করতে সাহায্য করে।
সারাংশ
সঠিক ইনডেক্সিং ব্যবহার করার মাধ্যমে MySQLi ডেটাবেসের পারফরম্যান্স ব্যাপকভাবে উন্নত করা যায়। তবে ইনডেক্স তৈরি করার ক্ষেত্রে সঠিক পদ্ধতি এবং সিদ্ধান্ত নেওয়া অত্যন্ত গুরুত্বপূর্ণ, কারণ অতিরিক্ত ইনডেক্স তৈরি করার ফলে পারফরম্যান্সে নেতিবাচক প্রভাব পড়তে পারে। সঠিক ইনডেক্সিং ব্যবহার করে কোয়েরি এক্সিকিউশন আরও দ্রুত করা সম্ভব।