Kacam.net

Datenbanken

联合索引的顺序

(user_id, status) 这个索引,单查 status 为什么用不上?

Vorlage kopieren, dann ein Modell wählen. Es spielt den Interviewer und fragt dich Szene für Szene ab, statt dir die Antwort hinzulegen.

Auf einem Telefon mit installierter App öffnet das System die App direkt. In WeChat lassen sich keine externen Apps öffnen — öffne es zuerst im Browser.

Am Ende des kopierten Textes steht der Lösungsschlüssel, mit dem das Modell dich bewertet. Lies ihn nicht vorher — es zählt, dass du selbst darauf gekommen bist.

这一份是整个系列的地基:说不清叶子节点上是什么顺序的人,后面几份里「锁加在索引上」「扫描行数为什么这么大」都会跟着糊。

它不会给你「最左前缀」这四个字。它会让你先把六条记录按索引里的顺序抄一遍,然后一条条问哪些查询用得上 —— 你自己抄过那一串,规则就不用背了。

第三幕最值钱:索引是 (user_id, created_at, status),查询三个条件都写了 —— 有几列是真的用来定位的? 多数人第一次都答「三列」。

★★★☆☆ · etwa 35 Min. · Geprüft wird: 叶子上的字典序、最左前缀、范围列之后、排序能不能免掉

Worum es hier geht

Indexaufbau Greift er oder nicht

Schon gemacht?

Melde dich an, um festzuhalten, dass du diese Aufgabe geübt hast — beim nächsten Mal siehst du, wann das war.

Notizen von Leuten, die das gemacht haben

Noch hat niemand etwas geschrieben. Erzähl nach dem Durchlauf, was dabei herauskam — welche Szene dich ins Stocken brachte, welche Schlussfolgerung du danach geändert hast.

Anmelden, um eine Notiz zu schreiben.

So funktioniert es

Diese Reihe ist zum Lernen gedacht: Sie führt dich, sie treibt dich nicht in die Enge. Wenn du hängst, fragt sie zuerst, auf welcher Ebene (nie gehört / weiß es, aber nicht warum / weiß warum, kann es aber nicht anwenden) und entscheidet dann, was sie gibt. Erst nach zwei Anläufen erklärt sie direkt — und lässt es dich danach in eigenen Worten wiederholen.

Standardmäßig wird von MySQL / InnoDB ausgegangen — die Hälfte der Fallen hier sind Implementierungsdetails, und Clustered Index, Rückgriff auf die Tabelle und Gap Locks funktionieren anderswo anders. PostgreSQL oder anderes geht auch: sag es im ersten Satz, dann folgt sie deiner Engine und benennt, wo die Schlüsse abweichen.

So fängst du an

  1. Eine auswählen, öffnen, den Prompt kopieren.
  2. In einen frischen, leeren Chat einfügen und zuerst sagen, welche Engine und Version du nutzt (ohne Angabe wird MySQL 8 angenommen).
  3. Danach nichts weiter sagen und auf die erste Frage warten.

Vier Kommandos, jederzeit einsetzbar

  • 跳过 Sofort zum nächsten Akt
  • 换个说法 Diesen Punkt aus einem anderen Blickwinkel
  • 直说吧 Die vollständige Antwort geben, danach abfragen
  • 复盘 Direkt zur Abschlusskarte

Drei Stolperfallen

  • Lies den Lösungsschlüssel am Ende nicht vorher — die Rubrik „häufige Denkfehler“ ist die Antwort auf jede einzelne Frage.
  • Rechne damit, nach Zahlen gefragt zu werden. „Etwas schneller“, „spart IO“ wird sofort unterbrochen: wie viele Zeilen? wie oft? wie viel schneller? Ein Schluss ohne Zahl ist auswendig gelernt.
  • Sobald sie dich lobt, verweise auf die Regel „lob mich nicht“. Führen ist nicht Streicheln.

Fang mit dem zusammengesetzten Index an — er ist das Fundament: „Sperren sitzen auf Indexeinträgen“ und „warum liest es so viele Zeilen“ stützen sich beide auf seinen einen Satz. Wenn dich Nebenläufigkeit in der Produktion beißt, fang mit „lesen, dann ändern“ an; bei langsamen Abfragen mit dem Ausführungsplan.