Тебе все равно.С крошечной таблицей с 30000 строк все будет очень быстро, даже сканирование таблицы.
Однако, похоже, что выбран другой план объяснения.В случае innodb сначала используется таблица custom_data_person, а также индекс покрытия.Затем он запрашивает таблицу адресов электронной почты для каждой строки, найденной в таблице custom_data_person.Это похоже на разумный план объяснения.
Возможно, в оптимизаторе таблиц памяти есть какая-то плохая пессимизация.
Я бы держался подальше от таблиц памяти.Если вам нужна таблица, которая ведет себя почти как таблица памяти, используйте таблицу MyISAM и обрежьте ее при запуске сервера.Таблицы памяти сосут невероятно плохо, потому что они хранят varchars, заполненные до максимальной длины, поэтому они обычно используют намного больше памяти, чем таблицы другого типа.MyISAM использует хранилище очень эффективно.В качестве альтернативы, используйте таблицы InnoDB для всего.
К сожалению, innodb не предоставляет способ установить долговечность для каждой таблицы, поэтому, если fsync в каждой транзакции вас беспокоит, вам придется делать больше (и, следовательно,меньшее количество транзакций.
Использование нескольких механизмов является компромиссом, поскольку сервер редко может каким-либо образом автоматически разделить свой (конечный) ОЗУ между механизмами.Таким образом, вы обычно хотите использовать только один движок;это включает в себя механизм памяти, который с радостью отнимет кучу памяти у вашего innodb (следовательно, сделает его медленнее, поскольку он может уместить меньше вашей базы данных в памяти), если вы настроите его таким образом.действительно, действительно не волнует 30 тысяч строк.30 тыс. Строк могут уместиться в самой маленькой памяти, даже если они огромны.Любой движок - это движок памяти, когда вы используете 30k строк.