Heim > Fragen und Antworten > Hauptteil
Wie wir alle wissen, speichert innodb nur Primärschlüsselwerte im Sekundärindex, was bedeutet, dass wir den Clustered-Index-B+-Baum erneut durchlaufen müssen, um Zeilendatensätze zu erhalten.
Warum speichern Sie den Zeilenzeiger nicht direkt im Sekundärindex, um den zusätzlichen Suchaufwand zu reduzieren?
P粉4690907532023-09-12 16:06:28
没有“行指针”。 PRMARY KEY
的列具有在数据的 BTree 中定位行的功能。
当然,通过 PK 查找可以说比“行指针”慢。但更新、删除、块分割等都会自动处理。 (参见 Bill 的评论。)这使代码更加简单。而且,在某些情况下,速度更快。
更快的简单示例:Given
PRIMARY KEY(id), INDEX(foo) -- effectively (foo, id), as discussed above SELECT id FROM tbl WHERE foo = 123;
在这个例子中,索引的BTree有完整的答案;无需访问数据的 BTree。因此,该索引被称为此 SELECT
的“覆盖”。