Нет, это не так.
База данных не будет содержать строки в оперативной памяти / подкачке.
Тем не менее, он будет пытаться, и MySQL старается изо всех сил, чтобы кэшировать как можно больше (индексы, результаты и т. Д ...). Ваша конфигурация mysql дает значения для доступных буферов памяти для различных типов кэшей (для различных типов механизмов хранения) - вы не должны позволять этот кэш менять местами.
Проверьте это
Итог - это должно быть очень легко протестировать это с использованием только клиента (я не знаю dbi в Perl, возможно, но я сомневаюсь в этом, делать что-то, что заставляет mysql загружать все при подготовке). Во всяком случае ... проверить это:
Если вы действительно выполните подготовку к SELECT SQL_NO_CACHE million_rows FROM table
, а затем извлекаете только несколько строк из миллионов.
Затем вы должны сравнить производительность с SELECT SQL_NO_CACHE only_fetched_rows FROM table
и посмотреть, как это работает.
Если результаты сопоставимы (и быстры), то я считаю, что вы можете назвать блефом вашего коллеги.
Также, если вы включите журнал операторов, фактически выданных для mysql, и дадите нам стенограмму этого, то мы (не люди Perl) можем дать более точный ответ о том, что будет делать mysql.