0

時々、私は次のようなものを介して2つの大きなテーブルを結合する必要があります

SELECT t1.x + t2.x FROM t1 JOIN t2 USING (some_unimportant_column)

両方のテーブルが大きく、にインデックスがないため、時間がかかりますsome_unimportant_column。更新中にディスクスペースと時間がかかるため、インデックスを保持したくありません。さらに、時々私は参加が必要USING (another_unimportant_column)です。

このJOINは、インデックスを正当化するほど頻繁ではありませんが、非常に非効率的な計算を1時間待つほど珍しいことではありません。非常にうまく機能するのは

  • 1つのテーブルの列にインデックスを作成します
  • JOINを実行します
  • インデックスを削除します

しかし、これを手動で行うのは面倒であり、DDLコマンドによるコミットは厄介です。

なぜデータベースがこれを理解できないのだろうか?私はmysqlを使用していますが、他のDBエンジンがこれについて賢いのではないかと思いますか?

4

1 に答える 1

0

ストアドプロシージャでそれを行うことができます。

ストアド プロシージャは、インデックスを作成し、SQL を実行してから、インデックスを削除します。

于 2012-12-16T19:17:01.300 に答える