Jeg gætter på, at det er på grund af en "densitet" af samme nøgle-records på disken. Jeg tror, at posterne med samme id er gemt i tæt (dvs. få antal blokke), og dem med samme link er gemt i sparse (dvs. , distribueret til et stort antal blokke).Hvis du har indsat poster i rækkefølgen af id, kan denne situation ske.
Antag at:1. der er 10.000 poster,2. de er gemt i rækkefølgen som (id, link) =(1, 1), (1, 2),..., (1, 100), (2, 1)... og3. 50 poster kan gemmes i en blok.
I antagelsen ovenfor består blok #1~#3 af posterne (1, 1)~(1, 50), (1, 51)~(1, 100) og (2, 1)~(2, 50) hhv.
Når du SELECT * FROM edges WHERE id=1
, kun 2 blokke (#1, #2) skal indlæses og scannes. På den anden side SELECT * FROM edges WHERE link=1
kræver 50 blokke (#1, #3, #5,...), selvom antallet af rækker er det samme.