没有索引的更有效的JOIN

时间:2012-12-14 14:45:38

标签: mysql database join

我需要通过类似

之类的东西加入两个大表
SELECT t1.x + t2.x FROM t1 JOIN t2 USING (some_unimportant_column)

并且由于两个表都很大并且some_unimportant_column上没有索引,因此需要很长时间。我不想保留索引,因为它在更新期间花费了磁盘空间和时间;此外,有时我需要加入USING (another_unimportant_column)

虽然这个JOIN不足以证明索引的合理性,但是等待一个小时来进行极低效的计算并不是很少见。什么效果很好

  • 在一个表中的列上创建索引
  • 执行JOIN
  • 删除索引

但手动执行此操作非常繁琐,并且由于DDL命令而导致的提交非常糟糕。

我想知道为什么数据库无法解决这个问题?我正在使用mysql并且还想知道其他数据库引擎是否更聪明这个?

1 个答案:

答案 0 :(得分:0)

您可以使用存储过程执行此操作。

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