برای یک جدول orders با ستون‌های id, customer_id, order_date و total_amount، با استفاده از EXPLAIN PLAN کوئری SELECT ... WHERE customer_id = X را قبل و بعد از ایجاد ایندکس روی customer_id اجرا و نتایج را مقایسه و بهینه‌سازی کنید

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

0.0

یک جدول نمونه بسازید و داده‌های کافی درج کنید، سپس در MySQL از EXPLAIN و در PostgreSQL از EXPLAIN یا EXPLAIN ANALYZE برای دیدن برنامه اجرا استفاده کنید؛ قبل از ایجاد ایندکس برنامه معمولاً اسکن کامل (FULL TABLE SCAN / seq scan) را نشان می‌دهد. با ایجاد ایندکس مثل CREATE INDEX idx_customer ON orders(customer_id) کوئری را دوباره بررسی کنید و به فیلدهایی مانند type/extra (MySQL) یا "Seq Scan"/"Index Scan" و مقادیر cost/rows/time توجه کنید. نکات: ستون‌های مورد استفاده در WHERE یا JOIN را ایندکس کنید، با EXPLAIN ANALYZE زمان واقعی را بسنجید و از ایندکس‌های غیرضروری پرهیز کنید تا نوشتن (INSERT/UPDATE) بیهوده کند نشود.

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

برای جدول orders با ستون‌های id، customer_id، order_date و total_amount، اجرای EXPLAIN قبل از ایجاد ایندکس روی customer_id معمولاً اسکن کامل جدول را نشان می‌دهد و پس از ایندکس به صورت اسکن شاخص یا محدوده تبدیل می‌شود. با استفاده از EXPLAIN ANALYZE در PostgreSQL یا EXPLAIN در MySQL می‌توانید زمان واقعی اجرا و مقادیر هزینه/ردیف را مقایسه کنید. اگر کاردینالیتی مشتری‌ها بالا باشد و کوئری شما اغلب برای یک مشتری مشخص اجرا می‌شود، ایندکس روی customer_id مزایای چشمگیری دارد؛ در غیر این صورت سود آن کمتر است. برای بهینه‌سازی بیشتر می‌توانید ایندکس ترکیبی مثل (customer_id, order_date) یا (customer_id, total_amount) بسازید و مراقب باشید از ایندکس‌های غیرضروری پرهیز کنید تا کارایی نوشتن INSERT/UPDATE به خطر نیفتد.

گزارش

1 پاسخ

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

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