Warum speichert innodb Zeilenzeiger nicht in sekundären/nicht gruppierten Indizes?
P粉038161873
P粉038161873 2023-09-11 17:28:42
0
1
591

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粉038161873
P粉038161873

Antworte allen(1)
P粉469090753

没有“行指针”。 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 的“覆盖”。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage