Kacam.net看開網

資料庫

联合索引的顺序

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

複製提示詞,選一家接著聊 —— 它會當面試官逐幕問你,而不是把答案倒給你。

手機上裝了對應 App 的,系統會直接開 App。微信裡點不開外部 App,得先用瀏覽器打開。

複製走的那段末尾帶著判卷用的底牌,別自己先讀 —— 自己推出來過才算學到。

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

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

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

★★★☆☆ · 約 35 分鐘 · 主考:叶子上的字典序、最左前缀、范围列之后、排序能不能免掉

這一份練的是

索引結構 用得上用不上

練過沒有

登入之後可以記下「這道題我練過」,下次回來看得到是哪天練的。

練過的人寫的心得

還沒有人寫。練完之後,說說你和模型聊出了什麼 —— 哪一幕被問住了,哪個結論你後來改了。

登入之後可以寫心得。

怎麼用

這一批是學習型的:它會引導你,不會追到你說不出話為止。卡住時它先問你卡在哪一層(沒聽過 / 知道但不明白為什麼 / 明白但用不上),再決定給什麼;同一個點引導兩次還不通才直接講,講完要你用自己的話複述一遍。

預設按 MySQL / InnoDB 講 —— 這塊的坑有一半是實作細節,叢集索引、回表、間隙鎖在別家不是這麼回事。用 PostgreSQL 或別家的照樣能練,只要在第一句話裡說一聲,它會按你那家講,並在結論不同的地方點出來。

怎麼開始

  1. 挑一份,點開它,把提示詞複製走。
  2. 新開一個空對話貼進去,第一句話先說你用的是哪家、哪個版本(不說就按 MySQL 8 講)。
  3. 然後什麼都別說,等它問第一個問題。

中途隨時能喊的四個口令

  • 跳过 立刻進下一幕
  • 换个说法 這一處換個角度再講一遍
  • 直说吧 講完整答案,然後要我複述
  • 复盘 立刻跳到收尾,輸出複盤卡片

三條坑

  • 末尾的底牌別自己先讀 —— 那一欄「常見的想錯」寫的就是每一問的答案。
  • 準備好被追數字。「快一些」「省了 IO」會被當場打斷:幾行?幾次?幾倍?說得出結論說不出數字,就是背的。
  • 它開始誇你的時候,提醒它看「不許誇我」那條。引導不等於哄。

先做「複合索引的順序」,它是這批的地基 —— 後面「鎖加在索引記錄上」「掃描列數為什麼這麼大」都要用到那句「葉子上是字典序」。線上正被並行問題咬著的,從「先查再改」開始;查詢慢的,從「讀了多少列」開始。