Kacam.net

Database

翻到第 5000 页

LIMIT 20 OFFSET 100000 —— 它是怎么找到第 100001 行的?

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.

答案朴素得让人不舒服:一条条数过去。知道这一句之后,「为什么加了索引还是慢」「为什么第一页快最后一页慢」就都不用问了。

但这一份的一半重量在另一边:换成游标分页之后你放弃了什么。跳页没了、总页数没了、收藏的「第 37 页」也没了 —— 说不出这几条的,只是抄了一个方案。收尾时它会把「只说了技术代价」的地方单独标出来。

最后还问一句很少有人问的:到底是谁在翻第 5000 页?

★★★☆☆ · circa 30 min · Cosa si valuta: OFFSET 的线性代价、复合游标、跳页与总数的取舍、COUNT 的代价

Che cosa allena

Paginazione e volumi 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.