Myslím, že je to kvůli „hustotě“ záznamů stejného klíče na disku. Myslím, že záznamy se stejným ID jsou uloženy v hustém (tj. s malým počtem bloků) a ty se stejným odkazem jsou uloženy v řídkém (tj. , distribuované do velkého počtu bloků). Pokud jste vložili záznamy v pořadí id, může nastat tato situace.
Předpokládejme, že:1. existuje 10 000 záznamů,2. jsou uloženy v pořadí jako (id, odkaz) =(1, 1), (1, 2),..., (1, 100), (2, 1)... a 3. V bloku lze uložit 50 záznamů.
Ve výše uvedeném předpokladu se blok #1~#3 skládá ze záznamů (1, 1)~(1, 50), (1, 51)~(1, 100) a (2, 1)~(2, 50) respektive.
Když SELECT * FROM edges WHERE id=1
, je třeba načíst a naskenovat pouze 2 bloky (#1, #2). Na druhou stranu SELECT * FROM edges WHERE link=1
vyžaduje 50 bloků (#1, #3, #5,...), i když je počet řádků stejný.