Kacam.net

Bancos de dados

联合索引的顺序

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

Copie a instrução e escolha um modelo. Ele faz o papel de entrevistador e vai te perguntando ato por ato, em vez de entregar a resposta.

Num celular com o aplicativo instalado, o sistema abre o aplicativo direto. Dentro do WeChat não é possível abrir aplicativos externos — abra primeiro no navegador.

O texto copiado termina com o gabarito que o modelo usa para te avaliar. Não leia antes: o que vale é ter chegado lá sozinho.

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

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

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

★★★☆☆ · cerca de 35 min · O que é avaliado: 叶子上的字典序、最左前缀、范围列之后、排序能不能免掉

O que este treina

Estrutura do índice Usa ou não usa

Já fez este?

Entre para marcar que já treinou este; da próxima vez você verá em que dia foi.

Anotações de quem já fez

Ninguém escreveu ainda. Depois de fazer, conte o que saiu da conversa: qual ato te travou, qual conclusão você mudou depois.

Entrar para escrever uma anotação.

Como usar

Esta série é de aprendizado: ela conduz, não encurrala. Quando você trava, ela primeiro pergunta em que camada você travou (nunca ouvi falar / sei mas não sei por quê / sei por quê mas não consigo usar) e só então decide o que dar. Só explica depois de conduzir duas vezes, e em seguida pede que você repita com suas palavras.

Por padrão ela raciocina em MySQL / InnoDB —— metade das armadilhas aqui são detalhes de implementação, e índice agrupado, volta à tabela e gap locks funcionam diferente em outros bancos. PostgreSQL ou outro serve: diga isso na primeira frase e ela segue o seu banco, apontando onde as conclusões mudam.

Como começar

  1. Escolha um, abra e copie o prompt.
  2. Cole numa conversa nova e vazia e diga primeiro qual banco e versão você usa (sem isso ela assume MySQL 8).
  3. Depois não diga mais nada e espere a primeira pergunta.

Quatro comandos para usar a qualquer momento

  • 跳过 Já para o próximo ato
  • 换个说法 Explicar este ponto por outro ângulo
  • 直说吧 Dar a resposta completa e depois me fazer repetir
  • 复盘 Ir direto para a ficha final

Três armadilhas

  • Não leia o gabarito do fim antes —— a seção «erros de raciocínio comuns» é a resposta de cada pergunta.
  • Prepare-se para ser cobrado por números. «Um pouco mais rápido», «economiza IO» é cortado na hora: quantas linhas? quantas vezes? quantas vezes mais rápido? Conclusão sem número é decoreba.
  • Assim que começar a elogiar, lembre-o da regra «não me elogie». Conduzir não é acariciar.

Comece pelo índice composto: é o alicerce da série; «os bloqueios ficam nos registros de índice» e «por que ele lê tantas linhas» se apoiam os dois na frase-chave dele. Se a concorrência está mordendo em produção, comece por «ler e depois gravar»; se as consultas estão lentas, pelo plano de execução.