これは、ディスク上の同じキーレコードの「密度」が原因だと思います。同じIDのレコードは密に保存され(つまり、ブロック数が少ない)、同じリンクを持つレコードはスパースに保存されると思います(つまり、 、膨大な数のブロックに分散されます。IDの順序でレコードを挿入した場合、この状況が発生する可能性があります。
それを仮定します:1。 10,000件のレコードがあります2。 (id、link)=(1、1)、(1、2)、...、(1、100)、(2、1)...、3のような順序で保存されます。 1つのブロックに50レコードを保存できます。
上記の仮定では、ブロック#1〜#3は、レコード(1、1)〜(1、50)、(1、51)〜(1、100)および(2、1)〜(2、50)で構成されます。それぞれ。
SELECT * FROM edges WHERE id=1
の場合 、2ブロック(#1、#2)のみがロードおよびスキャンされます。一方、SELECT * FROM edges WHERE link=1
行数が同じでも、50ブロック(#1、#3、#5、...)が必要です。