برای یک جدول 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) بیهوده کند نشود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای جدول 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 به خطر نیفتد.
گزارش