我可以强制 MySQL 使用磁盘内部表吗?

Can I force MySQL to use on-disk internal tables?

如果我事先知道查询创建的内部表无法放入可用内存,我可以强制 MySQL 使用磁盘上的内部表,以避免在内存中创建和那么 HEAP 到 DISK 的转换呢?暂时是一种方法

set tmp_table_size = 0

或者有更好的方法吗?

设置您的 tmp_table_size 是正确的方法。最小值为 1024,我不认为将其设置为 0 会起作用。

此设置是专门针对您的情况进行的:

SET big_tables = ON

(然后关闭它。)

SELECT.

之前

注意事项:在 MariaDB 10.5 中已弃用,取而代之的是 SET tmp_memory_table_size = 0;