SQL: عملکرد ضعیف با وجود شاخص

من فقط با مشکل عملکرد زیر در یک پایگاه داده SQL روبرو شدم: در یک جدول SQL به نام "کاربران" با 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`);

تنظیم شده بود دلیل عملکرد ضعیف ، فراخوانی عملکرد DATE است: ستون نمایه شده "ایجاد شده" توسط تابع DATE ارسال می شود و شاخص را بی اثر می کند. Query Optimizer فقط "ایجاد شده" را می داند اما نتیجه DATE (ایجاد شده) را نمی داند. سeryال بهینه شده

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

در مدت زمان 0.4 ثانیه منجر به نتیجه مطلوب می شود.

بازگشت