আমার কাছে একটি বহুবিধ সূচকযুক্ত একটি টেবিল রয়েছে এবং ক্যোয়ারিতে সর্বাধিক পারফরম্যান্স পাওয়ার জন্য সূচীর যথাযথ বাছাই সম্পর্কে আমার সন্দেহ আছে।
দৃশ্য:
পোস্টগ্রিসকিউএল 8.4, প্রায় এক মিলিয়ন সারি সহ টেবিল
কলামে মানগুলি C1 সম্পর্কে থাকতে পারে 100 মান আলাদা । আমরা ধরে নিতে পারি যে মানগুলি সমানভাবে বিতরণ করা হয়েছে, সুতরাং প্রতিটি সম্ভাব্য মানের জন্য আমাদের কাছে প্রায় 10000 সারি রয়েছে।
কলাম C2 থাকতে পারে 1000 মান আলাদা । আমাদের প্রতিটি সম্ভাব্য মানের জন্য 1000 সারি রয়েছে।
ডেটা অনুসন্ধান করার সময়, শর্তটিতে সর্বদা এই দুটি কলামের মান অন্তর্ভুক্ত থাকে, সুতরাং সারণীতে সি 1 এবং সি 2 সংযুক্ত একটি মাল্টিকালম ইনডেক্স রয়েছে। ফিল্টারিংয়ের জন্য যদি কেবল একটি কলাম ব্যবহার করে আপনার কাছে প্রশ্ন থাকে তবে আমি মাল্টিকালম ইনডেক্সে কলামগুলি সঠিকভাবে অর্ডার করার গুরুত্ব সম্পর্কে পড়েছি । আমাদের পরিস্থিতিতে এটি হয় না।
আমার প্রশ্ন এই এক:
ফিল্টারগুলির মধ্যে একটি থেকে অনেক ছোট ডেটা নির্বাচন করা হয় তা প্রমাণ করে, যদি প্রথম সূচকটি সর্বাধিক নির্বাচিত হয় (যেটি একটি ছোট সেটকে অনুমতি দেয়) তবে আমি কি পারফরম্যান্স উন্নত করতে পারি? রেফারেন্সকৃত নিবন্ধ থেকে গ্রাফিক্স না পাওয়া পর্যন্ত আমি এই প্রশ্নটি কখনই বিবেচনা করি নি:
মাল্টিকালম ইনডেক্স সম্পর্কে রেফারেন্স করা নিবন্ধ থেকে তোলা চিত্র ।
প্রশ্নগুলি ফিল্টারিংয়ের জন্য দুটি কলামের মান ব্যবহার করে। ফিল্টারিংয়ের জন্য আমার কেবল একটি কলাম ব্যবহার করার কোনও প্রশ্ন নেই। তাদের সমস্ত আছেন: WHERE c1=@ParameterA AND c2=@ParameterB
। এর মতো শর্তও রয়েছে:WHERE c1 = "abc" AND c2 LIKE "ab%"