たとえば、Ruby onRailsでActorモデルオブジェクトがTomHanksであり、「has_many」ファンが20,000 Fanオブジェクトである場合、
actor.fans
20,000要素の配列を提供します。おそらく、要素には値が事前に入力されていませんか?そうしないと、DBから各Actorオブジェクトを取得するのに非常に時間がかかる可能性があります。
それで、それは「知る必要がある」ベースですか?
では、actor.fans [500]にアクセスするとデータがプルされ、actor.fans [0]にアクセスするとデータがプルされますか?各レコードからレコードにジャンプする場合、シーケンシャル読み取りを実行してパフォーマンスを最適化することはできません。たとえば、これらのレコードが近くのセクター/プラッターレイヤーにある可能性があるため、ハードディスク上でより高速になります。プログラムが2つのランダムな要素に触れると、それらの2つのレコードを読み取るだけの方が高速になりますが、すべての要素にランダムな順序で触れると、すべてのレコードを順番に読み取ってからランダムを処理する方が速くなる可能性があります。要素。しかし、RoRは、私がいくつかのランダムな要素だけを実行しているのか、すべての要素をランダムに実行しているのかをどのように知るのでしょうか?