برای جدول orders (ستون‌های id, customer_id, order_date, status, total_amount) یک کوئری بنویسید که سفارش‌های یک customer_id مشخص را در یک بازه تاریخ معین برمی‌گرداند و توضیح دهید چه ایندکس(ها) را برای بهینه‌سازی این کوئری ایجاد می‌کنید.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:19

0.0

برای حل این مسئله یک SELECT با شرط WHERE روی customer_id و محدوده order_date بنویسید، از SELECT * پرهیز کنید و فقط ستون‌های لازم را بازگردانید. برای بهینه‌سازی، ایندکس ترکیبی روی (customer_id, order_date) بسازید تا فیلترها سریع‌تر شوند و در صورت نیاز ستون‌های پرمصرف را به عنوان پوششی (covering index) اضافه کنید. با استفاده از EXPLAIN یا EXPLAIN ANALYZE (در PostgreSQL یا MySQL) بررسی کنید که برنامه‌ریز کوئری از ایندکس استفاده می‌کند و در صورت نیاز با تغییر ترتیب ستون‌های ایندکس یا حذف SELECT * زمان اجرا را بهتر کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:19
دسته بندی ها: SQL SQL for beginner
reyhaneh در 221 روز قبل ساعت 13:45

برای بهبود کارایی، از یک کوئری با WHERE روی customer_id و بازه order_date استفاده کنید و فقط ستون‌های لازم (مثلاً id, order_date, status, total_amount) را بازگردانید. ایندکس ترکیبی روی (customer_id, order_date) بسازید تا فیلترها سریع شوند و در صورت نیاز، ایندکس پوششی شامل status و total_amount اضافه کنید تا برگشت نتایج از ایندکس باشد. برای اطمینان از استفاده بهینه از ایندکس، با EXPLAIN یا EXPLAIN ANALYZE بررسی کنید و در صورت عدم استفاده، ترتیب ایندکس را تغییر دهید یا ایندکس دیگری اضافه کنید. همچنین از SELECT * بپرهیزید و در صورت امکان با LIMIT یا pagination نتایج را محدود کنید.

گزارش

1 پاسخ

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

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