Kacam.net

Database

它为什么没走索引

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

Copia l'istruzione e scegli un modello. Farà l'intervistatore e ti interrogherà atto per atto invece di servirti la risposta.

Su un telefono con l'app installata, il sistema apre direttamente l'app. Dentro WeChat i collegamenti non aprono app esterne: aprilo prima in un browser.

Il testo copiato finisce con la griglia di correzione che il modello usa per valutarti. Non leggerla prima: vale l'averci arrivato da solo.

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

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

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

★★★★☆ · circa 35 min · Cosa si valuta: 写法失效的共同点、选择率、统计信息、怎么证明优化器错了

Che cosa allena

Usato o no Piani di esecuzione

Già fatto questo?

Accedi per segnare che l'hai fatto: la prossima volta vedrai in che giorno è stato.

Appunti di chi l'ha fatto

Non ha ancora scritto nessuno. Dopo averlo fatto, racconta cosa è venuto fuori: quale atto ti ha bloccato, quale conclusione hai cambiato dopo.

Accedi per scrivere un appunto.

Come si usa

Questa serie è di tipo didattico: ti guida, non ti mette all'angolo. Quando ti blocchi chiede prima a quale livello sei bloccato (mai sentito / lo so ma non so perché / so perché ma non lo applico), poi decide che cosa darti. Spiega solo dopo averti guidato due volte, e poi ti chiede di ridirlo con parole tue.

Per impostazione predefinita ragiona in MySQL / InnoDB —— metà delle trappole qui sono dettagli implementativi, e indice clusterizzato, ritorno alla tabella e gap lock funzionano diversamente altrove. PostgreSQL o altro va benissimo: dillo nella prima frase e seguirà il tuo motore, segnalando dove le conclusioni cambiano.

Come iniziare

  1. Scegline uno, aprilo, copia il prompt.
  2. Incollalo in una chat nuova e vuota, e di' prima quale motore e quale versione usi (se non lo dici assume MySQL 8).
  3. Poi non dire altro e aspetta la sua prima domanda.

Quattro comandi da usare in qualsiasi momento

  • 跳过 Subito al prossimo atto
  • 换个说法 Rispiega questo punto da un'altra angolazione
  • 直说吧 Dammi la risposta completa, poi fammela ripetere
  • 复盘 Vai subito alla scheda finale

Tre trappole

  • Non leggere prima la griglia in fondo —— la voce «errori di ragionamento frequenti» è la risposta a ogni domanda.
  • Preparati a dover dare numeri. «Un po' più veloce», «risparmia IO» viene interrotto subito: quante righe? quante volte? quante volte più veloce? Una conclusione senza numeri è imparata a memoria.
  • Appena inizia a elogiarti, rimandalo alla regola «non elogiarmi». Guidare non è coccolare.

Parti dall'indice composto: è la base della serie, «i lock stanno sui record dell'indice» e «perché legge così tante righe» si appoggiano entrambi alla sua frase chiave. Se in produzione ti sta mordendo la concorrenza, parti da «leggi e poi scrivi»; se le query sono lente, dal piano di esecuzione.