有时我需要通过类似的方式加入两张大桌子
SELECT t1.x + t2.x FROM t1 JOIN t2 USING (some_unimportant_column)
这需要很长时间,因为两个表都很大并且没有索引some_unimportant_column
。我不想保留索引,因为它在更新期间会占用磁盘空间和时间;此外,有时我需要一个 join USING (another_unimportant_column)
。
虽然这种 JOIN 的频率不足以证明索引的合理性,但等待一个小时以进行极其低效的计算并不罕见。效果很好的是
- 在一个表的列上创建索引
- 执行 JOIN
- 删除索引
但是手动执行此操作很乏味,并且由于 DDL 命令而导致的提交令人讨厌。
我想知道为什么数据库不能自己解决这个问题?我正在使用 mysql 并且还想知道其他数据库引擎是否对此更聪明?