Jag antar att det beror på en "densitet" av samma-nyckel-poster på disken. Jag tror att posterna med samma id lagras i täta (dvs. få antal block) och de med samma länk lagras i sparse (dvs. , distribueras till ett stort antal block). Om du har infogat poster i ordningen för id kan denna situation inträffa.
Antag att:1. det finns 10 000 poster,2. de lagras i ordning som (id, länk) =(1, 1), (1, 2),..., (1, 100), (2, 1)... och3. 50 poster kan lagras i ett block.
I antagandet ovan består block #1~#3 av posterna (1, 1)~(1, 50), (1, 51)~(1, 100) och (2, 1)~(2, 50) respektive.
När du SELECT * FROM edges WHERE id=1
, endast 2 block (#1, #2) ska laddas och skannas. Å andra sidan, SELECT * FROM edges WHERE link=1
kräver 50 block (#1, #3, #5,...), även om antalet rader är samma.