এসকিউএল: সূচক সত্ত্বেও খারাপ অভিনয়

আমি কেবলমাত্র এসকিউএল ডাটাবেসের নিম্নলিখিত কর্মক্ষমতা সমস্যার মুখোমুখি হয়েছি: users 1,000,000 এন্ট্রি সহ "ব্যবহারকারী" নামক একটি এসকিউএল টেবিলটিতে, নিবন্ধগুলির সংখ্যা নির্ধারণের ক্ষেত্রে আজ অগ্রহণযোগ্য 28 সেকেন্ড সময় নিয়েছে। নিবন্ধগুলির সময়গুলি "তৈরি" কলামে "Ymd H: i: s" ফর্ম্যাটে সংরক্ষণ করা হয়েছিল।


ক্যোয়ারী ব্যবহৃত হয়েছে

SELECT COUNT(ID) FROM users WHERE DATE(created) = '2014-12-21';

DATETIME ফর্ম্যাটের "তৈরি করা" কলামে ইতিমধ্যে একটি সূচক থাকা সত্ত্বেও এই লোডিংয়ের সময়টি নিয়েছে

ALTER TABLE `users` ADD INDEX `created` (`created`);

সেট করা ছিল। দুর্বল পারফরম্যান্সের কারণ হ'ল তারিখ ফাংশন কল: সূচকযুক্ত কলাম "তৈরি করা হয়েছে" তারিখ ফাংশন দ্বারা প্রেরণ করা হয় এবং সূচকটিকে অকার্যকর করে তোলে। ক্যোয়ারী অপ্টিমাইজার কেবলমাত্র "তৈরি" জানে, তবে তারিখ (তৈরি) এর ফলাফল নয়। অপ্টিমাইজড কোয়েরি

SELECT COUNT(ID) FROM users WHERE created BETWEEN '2014-12-21' AND '2014-12-21 23:59:59';

0.4 সেকেন্ডের সময়ের মধ্যে কাঙ্ক্ষিত ফলাফলের দিকে নিয়ে যায়।

পেছনে