0

有时我需要通过类似的方式加入两张大桌子

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 并且还想知道其他数据库引擎是否对此更聪明?

4

1 回答 1

0

您可以使用存储过程来做到这一点。

存储过程将创建索引,运行 sql,然后删除索引。

于 2012-12-16T19:17:01.300 回答