কম্পিউটার টিউটোরিয়াল

MySQL-এ কম্পোজিট ইনডেক্স দিয়ে স্লো কোয়েরি ফাস্ট করা


কম্পোজিট ইনডেক্স (Composite Index) কী?

  • একাধিক কলামে ব্যবহার করা একটি ইনডেক্স।
  • এটিকে মাল্টিপল-কলাম ইনডেক্স ও বলা হয়।
  • MySQL ব্যবহারকারীকে কম্পোজিট ইনডেক্স তৈরি করতে দেয় যাতে সর্বোচ্চ ১৬টি কলাম থাকতে পারে।
  • কোয়েরি অপ্টিমাইজার কম্পোজিট ইনডেক্স ব্যবহার করে এমন কোয়েরি-র জন্য যা ইনডেক্সের সব কলাম টেস্ট করে।
  • এটি যেসব কোয়েরির জন্যও ব্যবহার করা যায় যা প্রথম কলাম, প্রথম দুটি কলাম, ইত্যাদি টেস্ট করে।
  • যদি কলামগুলো ইনডেক্স ডেফিনিশনে সঠিক ক্রমে থাকে, তবে একক কম্পোজিট ইনডেক্স একই টেবিলের নির্দিষ্ট ধরনের কোয়েরি স্পিড আপ করতে পারে।

টেবিল তৈরির সময় কম্পোজিট ইনডেক্স তৈরি

CREATE TABLE table_name (
    c1 data_type PRIMARY KEY,
    c2 data_type,
    c3 data_type,
    c4 data_type,
    INDEX index_name (c2, c3, c4)
);

উপরের স্টেটমেন্টে কম্পোজিট ইনডেক্স তিনটি কলাম (c2, c3, c4) দিয়ে গঠিত।

বিদ্যমান টেবিলে কম্পোজিট ইনডেক্স যোগ করা

CREATE INDEX index_name ON table_name(c2, c3, c4);

কম্পোজিট ইনডেক্স দিয়ে স্লো কোয়েরি ফাস্ট করা

  • কোয়েরি এক্সিকিউশন স্পিড এর ডিউরেশনে নির্ভর করে।
  • ইন্ডেক্স হিন্ট ব্যবহার করলে কোয়েরি স্পিড বেড়ে।
  • MySQL অপ্টিমাইজার সঠিক ইনডেক্স বেছে নেওয়াতে সাহায্য করে।
  • এটি শুধু স্ট্যাটিক কোয়েরির জন্য করা উচিত।
  • যদি WHERE ক্লজ পরিবর্তনশীল কোয়েরি যোগ করা হয়, তবে পারফরম্যান্স খারাপ হবে, কারণ অপ্টিমাইজার তার কাজ করতে পারবে না।
  • FORCE INDEX স্টেটমেন্ট USE INDEX (index_list)-এর মতো কাজ করে, اضافه করে টেবিল স্ক্যানকে এক্সপেনসিভ টাস্ক হিসেবে বিবেচনা করে।
  • টেবিল স্ক্যান তখনই প্রয়োজন হয় যখন নাম্বড ইনডেক্স দিয়ে টেবিলের সারি খুঁজে বের করা কোনো উপায় নেই।
  1. MySQL ডেটাবেস তৈরি ও ব্যবহার

  2. MySQL কোয়েরি এন্টার করা (Entering MySQL Queries)

  3. MySQL-এ ইউজার-ডিফাইনড ভেরিয়েবল ব্যবহার

  4. MySQL কম্পোজিট إندেক্স