Если вы поместите всю таблицу в память, любые строки, которые вы не запрашиваете, все равно будут занимать место. Я предполагаю, что вряд ли вы можете сказать наверняка, что все строки всегда запрашиваются. OTOH, любой ваш do запрос будет кэширован (при условии, что вы вместо этого выделите то, что потребуется для таблицы памяти для кэширования.
Таблицы памяти предназначены для действительно необычных обстоятельств; их использование для ручного распределения кэширования запросов вряд ли будет продуктивным.
Я ожидал бы, что это также будет легко тестируемой ситуацией, поскольку, похоже, это проблема запроса, с которой вы сейчас сталкиваетесь. Как насчет другого вопроса, описывающего обстоятельства?
Я задаю вопрос InnoDB. Таблицы MyISAM были удивительно эффективны для неявно доступных таблиц только для чтения. Они сосут, освобождая и повторно используя дисковые блоки и переворачивая связанные индексы.
Временные таблицы являются антипаттернами. Поиск стратегий оптимизации запросов и устранение временных таблиц (автоматических или ручных) всегда является одним из главных приоритетов. Когда кто-то находит их полезными, это, как правило, указывает на необходимость внесения других важных улучшений