В Ruby on Rails, скажем, если объект модели Actor - это Том Хэнкс, а "has_many" - 20 000 объектов Fan, то
actor.fans
дает массив с 20 000 элементов.Возможно, элементы предварительно не заполнены значениями?В противном случае получение каждого объекта Actor из БД может быть очень трудоемким.
Так что это "необходимо знать"?
Так что он получает данные, когда я получаю доступ к actor.fans[500] и получить данные при доступе к actor.fans [0]?Если он переходит от каждой записи к записи, то он не сможет оптимизировать производительность, выполняя последовательное чтение, которое может быть быстрее на жестком диске, поскольку эти записи могут находиться в соседнем слое сектор / пластина - например, еслипрограмма касается 2-х случайных элементов, тогда быстрее будет просто прочитать эти 2 записи, но что, если она коснется всех элементов в случайном порядке, тогда может быть быстрее просто прочитать все записи последовательно, а затем обработать случайныеэлементы.Но как RoR узнает, делаю ли я только несколько случайных элементов или все элементы случайным образом?