با استفاده از تابع DATE در MySQL تاریخ (بدون بخش زمان) را از ستون created_at جدول orders استخراج کنید و تعداد سفارش‌ها را برای هر تاریخ نمایش دهید.

3.0 بازدید آخرین ویرایش در 223 روز قبل ساعت 01:03

0.0

برای حل این سوال از تابع DATE روی ستون created_at استفاده کنید: مثلاً SELECT DATE(created_at) AS order_date, COUNT(*) FROM orders GROUP BY DATE(created_at) ORDER BY order_date; این کوئری تاریخ را جدا کرده و تعداد ردیف‌ها را به ازای هر تاریخ می‌شمارد. نکته: استفاده از تابع روی ستون می‌تواند مانع استفاده از ایندکس شود؛ در جداول بزرگ برای فیلتر کردن بازه زمانی بهتر است از شرط WHERE با BETWEEN یا مقایسه‌های تاریخ-زمان استفاده کنید.

توسط پژوهشگر در 223 روز قبل ساعت 01:03
دسته بندی ها: MySQL MySQL for beginner
nima در 223 روز قبل ساعت 14:52

استفاده از DATE(created_at) برای گروه‌بندی به روز می‌تواند کارآمد باشد اما مانع استفاده از ایندکس روی ستون created_at می‌شود که روی جداول بزرگ کارایی را کاهش می‌دهد. برای کارکرد بهینه‌تر، اگر هدف فیلتر زمانی است، از WHERE با BETWEEN یا شروط تاریخ-زمان استفاده کنید تا از ایندکس بهره ببرید. همچنین می‌توانید با ایجاد ستون مجازی یا ستون تاریخ جداگانه (Date(created_at) در یک ستون جدا) ایندکس را حفظ کنید و همچنان به نتایج مشابه برسید. در نهایت، کوئری نمونه شما مناسب است اما برای حجم‌های بزرگ، افزودن محدودیت تاریخی و یا استفاده از partitioning می‌تواند کمک‌کننده باشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری