Предполагам, че това се дължи на „плътността“ на записи с един и същи ключ на диска. Мисля, че записите с еднакъв идентификатор се съхраняват в плътни (т.е. малко на брой блокове), а тези с една и съща връзка се съхраняват в редки (т.е. , разпределени в огромен брой блокове). Ако сте вмъкнали записи в реда на id, тази ситуация може да се случи.
Да приемем, че:1. има 10 000 записа,2. те се съхраняват в ред като (id, връзка) =(1, 1), (1, 2),..., (1, 100), (2, 1)... и3. В блок могат да се съхраняват 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,...), въпреки че броят на редовете е същият.