Saya kira itu karena "kepadatan" catatan dengan kunci yang sama pada disk. Saya pikir catatan dengan id yang sama disimpan dalam kepadatan (yaitu, beberapa jumlah blok) dan catatan dengan tautan yang sama disimpan dalam jarang (mis. , didistribusikan ke sejumlah besar blok).Jika Anda telah memasukkan catatan dalam urutan id, situasi ini dapat terjadi.
Asumsikan bahwa:1. ada 10.000 catatan,2. mereka disimpan dalam urutan seperti (id, link) =(1, 1), (1, 2),..., (1, 100), (2, 1)..., dan3. 50 catatan dapat disimpan dalam satu blok.
Pada asumsi di atas, blok #1~#3 terdiri dari record (1, 1)~(1, 50), (1, 51)~(1, 100) dan (2, 1)~(2, 50) masing-masing.
Saat Anda SELECT * FROM edges WHERE id=1
, hanya 2 blok (#1, #2) yang akan dimuat dan dipindai. Di sisi lain, SELECT * FROM edges WHERE link=1
membutuhkan 50 blok (#1, #3, #5,...), meskipun jumlah barisnya sama.