EXPLAIN ले optimizer ले छानेको plan देखाउँछ — यसले हरेक table कसरी access गर्नेछ — query नचलाइकनै। तपाईं यो indexes प्रयोग भएका छन् र थोरै rows जाँचिएका छन् भनी पुष्टि गर्न पढ्नुहुन्छ।
EXPLAIN ले optimizer ले छानेको plan देखाउँछ — यसले हरेक table कसरी access गर्नेछ — query नचलाइकनै। तपाईं यो indexes प्रयोग भएका छन् र थोरै rows जाँचिएका छन् भनी पुष्टि गर्न पढ्नुहुन्छ।
const / eq_ref / ref (index lookups, राम्रो) → range → index (full index scan) → ALL (full table scan, रातो झन्डा)।NULL = कुनै पनि होइन)।Using index (covering, उत्कृष्ट), Using filesort / Using temporary (memory मा वा disk मा sorting/grouping — प्रायः optimize गर्न सकिने)।EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- +------+------+------+---------+--------+----------------+
-- | type | key | rows | Extra |
-- | ALL | NULL | 900k | Using where; Using filesort | <- scans everything, sorts
-- +------+------+------+---------+--------+----------------+
-- Add an index that covers the filter AND the sort order:
CREATE INDEX idx_cust_created ON orders (customer_id, created_at);
EXPLAIN SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at;
-- | type | key | rows | Extra |
-- | ref | idx_cust_created | 30 | Using where | <- seeks 30 rows, no filesort
Index ले 900k rows को ALL scan लाई 30 को ref seek मा बदल्यो, र created_at दोस्रो column भएकाले rows पहिले नै sort भएर आउँछन् — filesort हराउँछ।
वास्तविक timing र row counts पनि हेर्न EXPLAIN ANALYZE (MySQL 8) प्रयोग गर्नुहोस्, जसले अनुमान गलत हुने अवस्थाहरू समात्छ।
EXPLAIN नै अनुमानलाई प्रमाणले प्रतिस्थापन गर्ने तरिका हो। type: ALL, ठूलो rows, वा Using filesort देख्नाले तपाईंलाई index कहाँ हराइरहेको छ भन्ने ठ्याक्कै बताउँछ — "page ढिलो छ" बाट लक्षित समाधानसम्मको सबैभन्दा छिटो बाटो।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्