আমার টেবিলে কয়েক মিলিয়ন সারি রয়েছে এমন সারিগুলির সংখ্যা গণনা করার জন্য আমি একটি দ্রুত উপায় চাই। স্ট্যাক ওভারফ্লোতে আমি " মাইএসকিউএল: সারি সংখ্যা গণনার দ্রুততম উপায় " পোস্টটি পেয়েছি , যা দেখে মনে হচ্ছে এটি আমার সমস্যার সমাধান করবে। বায়ুয়া এই উত্তরটি প্রদান করেছিল:
SELECT
table_rows "Rows Count"
FROM
information_schema.tables
WHERE
table_name="Table_Name"
AND
table_schema="Database_Name";
যা আমি পছন্দ করেছি কারণ এটি স্ক্যানের পরিবর্তে দেখার মতো লাগে তাই এটি দ্রুত হওয়া উচিত, তবে আমি এটির বিরুদ্ধে পরীক্ষা করার সিদ্ধান্ত নিয়েছি
SELECT COUNT(*) FROM table
পারফরম্যান্সের পার্থক্য কত ছিল তা দেখতে।
দুর্ভাগ্যক্রমে আমি নীচের মত বিভিন্ন উত্তর পেয়েছি :
প্রশ্ন
উত্তরগুলি প্রায় 2 মিলিয়ন সারি দ্বারা পৃথক কেন? আমি যে কোয়েরিটি অনুমান করছি যে পুরো টেবিল স্ক্যানটি করে সেগুলি আরও সঠিক সংখ্যা, তবে এই ধীর অনুসন্ধানটি না চালিয়ে আমি কী সঠিক নম্বর পেতে পারি?
আমি দৌড়েছি ANALYZE TABLE data_302
, যা 0.05 সেকেন্ডে শেষ হয়েছে। যখন আমি আবার ক্যোয়ারী চালিয়েছি, এখন আমি 34384599 সারিগুলির একটি খুব কাছাকাছি ফলাফল পেয়েছি, তবে এটি এখনও select count(*)
34906061 সারিগুলির মতো একই সংখ্যা নয় । টেবিলটি তাত্ক্ষণিকভাবে ফেরত বিশ্লেষণ করে পটভূমিতে প্রক্রিয়া করবে? আমি এটির মূল্যবান মনে করি এটি একটি পরীক্ষামূলক ডাটাবেস এবং বর্তমানে লিখিত হয় নি।
টেবিলটি কতটা বড় তা কাউকে বলার ক্ষেত্রে যদি কেউ নজর রাখে না তবে আমি সারি গণনাটি কিছুটা কোডে পাস করতে চেয়েছিলাম যা এই চিত্রটি ব্যবহার করে ডাটাবেস অনুসন্ধানের জন্য "সমান আকারের" অ্যাসিনক্রোনাস কোয়েরি তৈরি করতে পারে সমান্তরালভাবে, আলেকজান্ডার রুবিনের সমান্তরাল ক্যোয়ারী এক্সিকিউশনের সাথে ধীর ক্যোয়ারী পারফরম্যান্স বাড়ানো পদ্ধতির অনুরূপ । যেমনটি হ'ল, আমি সর্বাধিক আইডিটি পেয়ে SELECT id from table_name order by id DESC limit 1
যাব এবং আশা করব যে আমার টেবিলগুলি খুব বেশি খণ্ডিত হবে না।
NUM_ROWS
colum