মাইএসকিউএল বাছাই করার জন্য কোনও সূচক ব্যবহার করা হচ্ছে কিনা তা আমি কীভাবে বলতে পারি?


10

আমার একটি অর্ডার বাই ক্লজের সাথে একটি প্রশ্ন রয়েছে যা একটি সূচকের সর্বশেষ কলাম যা একটি সূচক যা সর্বনিম্নভাবে ফর্মের ক্লজটিতে ব্যবহৃত হচ্ছে তা একটি কলাম ব্যবহার করে:

SELECT
  cols
FROM
  tables
WHERE
  col_1 = x
  AND col_2 = y
  AND col_3 = z
ORDER BY col_4

এবং সূচীটি সেই ক্রমে কলামগুলিতে (কল_1, কল_2, কল_3, কল_4) তৈরি করা হয়েছে।

যখন আমি কোয়েরিটি 99% এরও বেশি সময় "প্রোফাইল বাছাইয়ের ফলাফল" অবস্থায় ব্যয় করি। col_4 হ'ল একটি টাইমস্ট্যাম্প কলাম এটি যদি কোনও পার্থক্য করে। আমি বুঝতে পারি যে অর্ডার কেবল নির্দিষ্ট পরিস্থিতিতে একটি সূচক ব্যবহার করতে পারে, তবে আমি আশাবাদী কখন এটি করবে তা সুনির্দিষ্টভাবে কিছুটা রহস্যজনক।

উত্তর:


13

আপনার EXPLAIN EXTENDEDজিজ্ঞাসার আগে সংযোজন করা উচিত এবং ফলাফল নিজেই দেখা উচিত ।

এটির জন্য একটি এন্ট্রি থাকা উচিত

  • possible_keys

যদি এই কলামটি NULL হয় তবে কোনও প্রাসঙ্গিক সূচী নেই। এই ক্ষেত্রে, আপনি কোয়েরিটির পরিচ্ছেদটি পরীক্ষা করে আপনার কোয়েরির কার্যকারিতা উন্নত করতে সক্ষম হতে পারেন যা এটি এমন কিছু কলাম বা কলামকে নির্দেশ করে যা কিনা সূচকের জন্য উপযুক্ত।

এবং

  • কী

মূল কলামটি কী (সূচক) নির্দেশ করে যা মাইএসকিউএল আসলে ব্যবহারের সিদ্ধান্ত নিয়েছে। যদি মাইএসকিউএল সারিগুলি সন্ধান করতে সম্ভাব্য_কিগুলি সূচকগুলির মধ্যে একটি ব্যবহার করার সিদ্ধান্ত নেয়, তবে সেই সূচকটি মূল মান হিসাবে তালিকাভুক্ত হয়।

আরও তথ্যের জন্য আপনি এই আউটপুটটি ব্যাখ্যা করতে পারেন এবং জয়েন টাইপগুলি ব্যাখ্যা করতে পারেন


আমি বুঝতে পেরেছি, বিশেষত আমার প্রশ্নটি হল আদেশের মাধ্যমে আদেশটি করা। আমার জিজ্ঞাসাটি ফিরিয়ে দেওয়া সারিগুলিকে সীমাবদ্ধ করতে নির্দিষ্ট সূচকটি ব্যবহার করছে তবে আমি অনুমান করছি যে সাজানোর ক্রমটি দেওয়া হয়েছে তা আদেশের দ্বারা আদেশের জন্য এটি ব্যবহার করছে না।
ক্রিস কুপার

1
কিছু ক্ষেত্রে, মাইএসকিউএল কোনও অতিরিক্ত বাছাই না করে একটি আদেশের আদেশ দ্বারা সন্তুষ্ট করতে একটি সূচক ব্যবহার করতে পারে। এমনকি সূচকটি যদি সঠিকভাবে সূচকের সাথে মেলে না, ততক্ষণ সূচকটি ব্যবহার করা যাবে যতক্ষণ না সূচকের অব্যবহৃত সমস্ত অংশ এবং সমস্ত অতিরিক্ত অর্ডার বাই কলামগুলি যেখানে বিধি অনুসারে স্থির থাকে। নিম্নলিখিত প্রশ্নগুলি সূচকের সাহায্যে অর্ডারটি
মহেশ পাতিল

1

আপনি EXPLAINআপনার ক্যোয়ারিতে ( explain select-or-whatever-your-query-is) ব্যবহার করেন ।

possible_keysযেগুলি ব্যবহার করা যেতে পারে সেগুলি প্রদর্শন করুন, keyএটি আসলে ব্যবহৃত হয়েছিল used


1
এটি যুক্ত করার জন্য: explain format=json select ...আরও বেশি শক্তিশালী। এটিতে অন্তর্ভুক্ত রয়েছে used_key_parts, যা আপনাকে জানায় যে কোনও যৌগিক কী আংশিক বা সম্পূর্ণরূপে ব্যবহৃত হয়েছিল কিনা এবং index_conditionআপনাকে জিজ্ঞাসা করবে যে কোয়ের অংশটি কোন সূচকটি দায়ী।
Okdewit
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.