Ik denk dat het komt door een "dichtheid" van records met dezelfde sleutel op de schijf. , verdeeld over een groot aantal blokken). Als u records in de volgorde van id hebt ingevoegd, kan deze situatie voorkomen.
Stel dat:1. er zijn 10.000 records,2. ze worden opgeslagen in de volgorde zoals (id, link) =(1, 1), (1, 2),..., (1, 100), (2, 1)..., and3. Er kunnen 50 records in een blok worden opgeslagen.
In de bovenstaande aanname bestaat blok #1~#3 uit de records (1, 1)~(1, 50), (1, 51)~(1, 100) en (2, 1)~(2, 50) respectievelijk.
Wanneer u SELECT * FROM edges WHERE id=1
, hoeven slechts 2 blokken (#1, #2) te worden geladen en gescand. Aan de andere kant, SELECT * FROM edges WHERE link=1
vereist 50 blokken (#1, #3, #5,...), ook al is het aantal rijen hetzelfde.