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

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的“覆盖”。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!