Kacam.net

डेटाबेस

它为什么没走索引

索引明明建了,它就是不走 —— 是写废了,还是它算过了?

प्रॉम्प्ट कॉपी करें, फिर कोई एक मॉडल चुनें। वह जवाब थमाने के बजाय इंटरव्यू लेने वाले की तरह दृश्य दर दृश्य आपसे पूछेगा।

ChatGPT Claude DeepSeek 豆包 Kimi Gemini

जिस फ़ोन में ऐप लगा है, वहाँ सिस्टम सीधे ऐप खोल देगा। WeChat के अंदर बाहरी ऐप नहीं खुलते — पहले ब्राउज़र में खोलें।

कॉपी किए हुए पाठ के आख़िर में वही उत्तर-कुंजी है जिससे मॉडल आपको आँकता है। पहले खुद न पढ़ें — खुद तक पहुँचना ही असली बात है।

「索引失效的十种情况」那种清单背完就忘,因为它没告诉你共同点。这一份要你自己说出那个共同点,然后拿它去判每一条具体的 SQL。

但真正的重点在第三幕:有一类「没走索引」是优化器算过之后的正确选择。分不开这两类,你会一路奔着「加个 hint 强制走索引」去 —— 而它会追你一句:你怎么知道走索引真的更快?拿什么数证明?

最后一幕反过来问:有没有可能走了索引比全表扫还慢。

★★★★☆ · लगभग 35 मिनट · क्या परखा जाता है: 写法失效的共同点、选择率、统计信息、怎么证明优化器错了

यह किस चीज़ का अभ्यास है

लगा या नहीं लगा एग्ज़ीक्यूशन प्लान

यह वाला कर चुके हैं?

साइन इन करके दर्ज करें कि यह अभ्यास कर लिया — अगली बार दिखेगा कि किस दिन किया था।

जिन्होंने यह किया, उनके नोट

अभी किसी ने नहीं लिखा। करने के बाद बताइए कि बातचीत से क्या निकला — किस दृश्य पर अटके, कौन-सा नतीजा बाद में बदला।

नोट लिखने के लिए साइन इन।

इसे कैसे इस्तेमाल करें

यह श्रृंखला सीखने के लिए है: यह राह दिखाती है, कोने में नहीं धकेलती। अटकने पर पहले पूछती है कि किस परत पर अटके हैं (कभी सुना ही नहीं / जानता हूँ पर क्यों नहीं जानता / क्यों जानता हूँ पर लगा नहीं पाता), फिर तय करती है कि क्या देना है। दो बार राह दिखाने के बाद ही सीधे बताती है, और फिर आपसे अपने शब्दों में दोहराने को कहती है।

डिफ़ॉल्ट रूप से यह MySQL / InnoDB के हिसाब से बात करती है —— यहाँ आधे जाल कार्यान्वयन की बारीकियाँ हैं, और क्लस्टर्ड इंडेक्स, टेबल पर वापस जाना और गैप लॉक दूसरी जगह अलग तरह से काम करते हैं। PostgreSQL या कोई और भी चलेगा: पहली ही पंक्ति में बता दें, यह उसी के हिसाब से चलेगी और जहाँ निष्कर्ष बदलते हैं वहाँ बता देगी।

कैसे शुरू करें

  1. एक चुनें, खोलें, प्रॉम्प्ट कॉपी करें।
  2. उसे एक नई खाली चैट में चिपकाएँ और पहली पंक्ति में बताएँ कि कौन-सा डेटाबेस और कौन-सा संस्करण है (न बताएँ तो MySQL 8 मान लिया जाएगा)।
  3. फिर कुछ न कहें और उसके पहले सवाल का इंतज़ार करें।

बीच में कभी भी बोले जा सकने वाले चार शब्द

  • 跳过 तुरंत अगले दृश्य पर
  • 换个说法 इस बिंदु को दूसरे कोण से फिर समझाओ
  • 直说吧 पूरा उत्तर बताओ, फिर मुझसे दोहरवाओ
  • 复盘 सीधे समापन कार्ड पर जाओ

तीन जाल

  • अंत की उत्तर-कुंजी पहले न पढ़ें —— «आम ग़लतफ़हमियाँ» वाला हिस्सा ही हर सवाल का जवाब है।
  • संख्याएँ पूछे जाने के लिए तैयार रहें। «थोड़ा तेज़», «IO बचता है» वहीं काट दिया जाएगा: कितनी पंक्तियाँ? कितनी बार? कितने गुना? बिना संख्या वाला निष्कर्ष रटा हुआ है।
  • जैसे ही यह तारीफ़ शुरू करे, «मेरी तारीफ़ मत करो» वाला नियम याद दिलाएँ। राह दिखाना दुलारना नहीं है।

कंपोजिट इंडेक्स वाली से शुरू करें: यही इस श्रृंखला की नींव है, «लॉक इंडेक्स रिकॉर्ड पर लगते हैं» और «यह इतनी पंक्तियाँ क्यों पढ़ रहा है» दोनों उसी एक वाक्य पर टिके हैं। प्रोडक्शन में कंकरेंसी काट रही हो तो «पढ़कर फिर बदलना» से शुरू करें; क्वेरी धीमी हों तो एग्ज़ीक्यूशन प्लान वाली से।