Je suppose que c'est à cause d'une "densité" d'enregistrements de même clé sur le disque. Je pense que les enregistrements avec le même identifiant sont stockés de manière dense (c. , répartis sur un grand nombre de blocs). Si vous avez inséré des enregistrements dans l'ordre de l'identifiant, cette situation peut se produire.
Supposons que :1. il y a 10 000 enregistrements,2. ils sont stockés dans l'ordre tel que (id, lien) =(1, 1), (1, 2),..., (1, 100), (2, 1)..., et3. 50 enregistrements peuvent être stockés dans un bloc.
Dans l'hypothèse ci-dessus, le bloc #1~#3 se compose des enregistrements (1, 1)~(1, 50), (1, 51)~(1, 100) et (2, 1)~(2, 50) respectivement.
Lorsque vous SELECT * FROM edges WHERE id=1
, seuls 2 blocs (#1, #2) doivent être chargés et scannés. D'autre part, SELECT * FROM edges WHERE link=1
nécessite 50 blocs (#1, #3, #5,...), même si le nombre de lignes est le même.