ব্যাখ্যা আউটপুট পরামর্শ দেয় যে আমার সূচক ব্যবহার হচ্ছে না used


9

আমি কেবল টেস্ট_স্ট্যাটাসে (তালিকাভুক্ত_সেটাস = আইএনটি) একটি সূচক দিয়ে আমার টেবিলটি সেট আপ করেছি:

এখানে চিত্র বর্ণনা লিখুন

যখন আমি ব্যবহার করি:

EXPLAIN SELECT * FROM reminder  WHERE done_status=2

আমি এটি ফিরে পেয়েছি:

আইডি নির্বাচন_প্রকার সারণী প্রকার সম্ভাব্য_ কী কী কী_লাইন রেফ সারি অতিরিক্ত
1 সিম্পল অনুস্মারক সমস্ত সম্পন্ন_ স্ট্যাটাস নাল নাল 5 কোথায় ব্যবহার করছে

তবে আমি যখন এই আদেশটি জারি করি:

EXPLAIN SELECT * FROM reminder  WHERE done_status=1

আমি নিম্নলিখিতটি ফিরে পেয়েছি:

আইডি নির্বাচন_প্রকার সারণী প্রকার সম্ভাব্য_ কী কী কী_লাইন রেফ সারি অতিরিক্ত
1 সিম্পল রিমাইন্ডার রেফ সম্পন্ন হয়েছে_ স্ট্যাটাস সম্পন্ন হয়েছে 4 স্ট্রাস্ট 4 কনস্ট 2   

EXPLAINআমাকে শো এটি 5 সারি, দ্বিতীয় সময় 2 সারি ব্যবহার করে।

আমি মনে করি না যে সূচকটি ব্যবহৃত হয়েছে, যদি আমি এটি প্রথমবার বুঝতে পারি তবে এটি আমাকে 3 সারি দেওয়া উচিত। আমি কি ভুল করব?

SHOW INDEX FROM reminder:

সারণী নন_উইনিক কী_নাম সিক_ইন_এন্ডেক্স কলাম_নাম কোলেশন কার্ডিনালিটি সাব_ পার্ট প্যাকড নাল সূচক_প্রকার মন্তব্য সূচি_কমেন্ট
অনুস্মারক 1 সম্পন্ন_সেটাস 1 সম্পন্ন_ স্ট্যাটাস এ 5 টি নাল বিট্রে

বর্ধিত ব্যাখ্যা:

আইডি সিলেক্ট_ টাইপ টেবিল টাইপ সম্ভব_কি কী কী_লেন রেফ সারিতে অতিরিক্ত ফিল্টার করা হয়
1 সিম্পল রিমাইন্ডার রেফ সম্পন্ন_ স্ট্যাটাস সম্পন্ন_স্ট্যাটাস 4 কনস্ট 2 100.00

show warnings আগ্রহের কিছু দেখায়নি।


আমাকে বিশ্বাস করুন সূচক কাজ করে। তবে আমি আপনার স্ক্রিন শটে খুব সহজেই কিছুই দেখতে পাচ্ছি না - আপনি কি "আপনার টেবিল থেকে সূচক শো" করতে পারেন

হ্যাঁ আমার প্রশ্নটি সম্পাদনা করেছেন

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

আগ্রহের বাইরে আপনি একটি "বর্ধিত ব্যাখ্যা করুন" এবং "শো সতর্কতা" দিয়ে পুনরাবৃত্তি করতে পারেন এটি সত্যিকারের এসকিউএল মাইএসকিএল চয়নগুলি দেখায়

@ আজরিয়াল কি মহিমান্বিত হয়?

উত্তর:


4

'সারি' ক্ষেত্রটি কী তা আপনি ভুল বুঝতে পারেন। এটি আপনার সন্ধানের জন্য সন্তুষ্ট হওয়ার জন্য পড়তে হবে এটি মাইএসকিএল অনুমান করে এমন সারিগুলির সংখ্যা। এই মানটি বেশ ভুল হতে পারে। এর অর্থ এই নয় যে এটি ফলাফলের সারিগুলির সংখ্যা - বা মাইএসকিএল দ্বারা পঠিত সারিগুলির আসল সংখ্যা


তাই? আমি বললাম এটা কোথায়? অপ্টিমাইজারটি যা পছন্দ করে তা এটি কি? সূচকটি এখনও কাজ করে।

@ আজরিয়াল এর অর্থ এই নয় যে সূচকটি ভেঙে গেছে। কেবলমাত্র অপ্টিমাইজার ডেটা অনুসন্ধানের জন্য সবচেয়ে কার্যকরী উপায় (তার মনে রেখে) চয়ন করুন। আমি ধরে নিয়েছিলাম যে ওপিটি এক্সপ্ল্যানে সারি কলামটি সঠিক হওয়ার প্রত্যাশা করছে। এর অর্থ এই নয় যে সূচকটি নষ্ট হয়েছে - কেবল যে মাইএসকিএল এটি ব্যবহার না করা পছন্দ করে (সম্ভবত)।

1
@ আজরিয়াল: আপনার পয়েন্টে আমি কিছু মিস করছি। একটি ব্যাখ্যার সারি কলামের সূচকগুলির সাথে কোনও সম্পর্ক নেই? মাইএসকিএল সূচকটি ব্যবহার না করা পছন্দ করে (সম্ভবত সমস্ত ডেটা একক পৃষ্ঠায় রয়েছে)। নিশ্চিত না আমি আপনার কথা বুঝতে পারছি? 5 সারির টেবিলের ক্যোরি অপ্টিমাইজেশন কিছু 'বিজোড়' ফলাফল আনতে চলেছে কারণ এটি আপনাকে কীভাবে অনুকূলিত করে তা বেশ কিছু যায় আসে না।


এই ক্ষেত্রে কে বিবেচ্য করবে যে কোন সূচকটি অপ্টিমাইজারটি বেছে নেয়? সূচকে নিজেই কোনও ভুল নেই, কারণ অপ্টিমাইজারের মনে হয়েছিল এটির প্রয়োজন নেই - এটি কী ব্যাপার?

3

প্রথম কার্যকর কার্যকর ক্ষেত্রটি সূচকটি নিশ্চিতভাবে ব্যবহার করা হয় না,
এটি তথ্য_সেমিমা হতে পারে some কিছু লেখার ক্রিয়াকলাপের পরে সূচীতে থাকা পরিসংখ্যান ডেটা ধরে না বা টেবিলে দীর্ঘক্ষণ অ্যাক্সেস করা হয়নি।

যেমনটি এখানে ব্যাখ্যা করুন: - মাইএসকিউএল কোয়েরি অপ্টিমাইজার সূচকগুলির পরিসংখ্যানগুলি কোথা থেকে পড়বে?

দ্বিতীয় কার্যনির্বাহী পরিকল্পনার জন্য, এটি তথ্য_সেমিমা বলে মনে হয় st

অতএব, সূচক অপ্টিমাইজার অনুযায়ী ক্যোয়ারী কার্যকর করা হয়।

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


0

প্রথম প্রয়োগের পরিকল্পনাটি কোনও সূচক ব্যবহার করছে না।

থেকে মাইএসকিউএল রেফারেন্স ওয়েবসাইট :

কখনও কখনও মাইএসকিউএল একটি সূচক ব্যবহার করে না, এমনকি যদি এটি উপলব্ধ থাকে। অপ্টিমাইজার অনুমান করে যে সূচকটি ব্যবহার করে সারণীর সারিগুলির একটি খুব বড় শতাংশ অ্যাক্সেস করার জন্য মাইএসকিউএল প্রয়োজন হবে এমন পরিস্থিতিতে যখন এটি দেখা দেয় তার মধ্যে একটি পরিস্থিতি। (এই ক্ষেত্রে, একটি টেবিল স্ক্যান সম্ভবত খুব দ্রুত হতে পারে কারণ এর জন্য কম সিক্সের প্রয়োজন)) তবে, এই জাতীয় কোয়েরি যদি কেবল কয়েকটি সারি পুনরুদ্ধার করতে লিমিট ব্যবহার করে তবে মাইএসকিউএল যাইহোক একটি সূচক ব্যবহার করে, কারণ এটি আরও দ্রুত সন্ধান করতে পারে ফলাফলটিতে কয়েকটি সারি ফিরে আসবে।

যদি আপনার টেবিলটিতে কেবল 5 টি সারি থাকে এবং আপনার প্রশ্নের মধ্যে 3 টি নির্বাচন করে, তবে মাইএসকিউএল অপ্টিমাইজার ধরে নেয় যে এটি পুরো টেবিলটি স্ক্যান করতে আরও দক্ষ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.