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

আমি কেবলমাত্র এসকিউএল ডাটাবেসের নিম্নলিখিত কর্মক্ষমতা সমস্যার মুখোমুখি হয়েছি: 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 সেকেন্ডের সময়ের মধ্যে কাঙ্ক্ষিত ফলাফলের দিকে নিয়ে যায়।

পেছনে