2013-07-20 12 views
7

私はtruncate table table_nameを使用しています。約100万行のテーブル上にありますが、それは過去3時間からの実行には時間がかかりすぎています。テーブルを切り捨てる時間が非常に長い、それは正常ですか?

正常ですか?あなたはテーブルからすべての行を削除する別の方法を提案することができますか?

+2

どのエンジン? MYISAMまたはInnoDB – hjpotter92

+0

また、次の項目を確認してください:http://bugs.mysql.com/bug.php?id=68184 – hjpotter92

+0

現在、このテーブルを使用している他のプロセスはありますか? – Ben

答えて

30

のためにこれを行いますいくつかのスクリプトは、このような

、などいくつかのケースでは文句を言わない仕事を切り捨てるかもしれません私が提案する方法は

RENAME TABLE table_name TO t1; 

CREATE TABLE table_name LIKE t1; 

DROP TABLE t1; 

であるか、またDELETE FROM table_name;

を使用することができます0
+2

残忍な...私はそれが大好きです:)あなたは本当にデータが必要ない場合;これはおそらくこれを行う最善の方法です。 – Trent

+0

が同意しました。より良い方法です。 –

+1

@smratikatiyar:これがうまくいく場合、答えを受け入れてください。 –

1

クエリの実行中にデッドロックが発生すると考えられますので、それを削除する方がよいでしょう。

私は、1回のクエリで小さなチャンクを削除することで多くのデータを削除していました(10kはうまく動作します)。

あなたは、インデックス、物事の種類といくつかの外部キー制約

簡単を持っているときですから、あなたにぴったり

+1

もしtruncateが遅いのであれば、同じ構造の新しいテーブルを作成して古いテーブルを削除することを考えていますが、かなり速くなると思います。 plsはこれについてURの意見を共有します。 –

0

私はちょうど切り捨てが(6分以上)と私はそれをキャンセルして永遠に取る必要があった。それとも私は思った。実際には、そのステップは1秒未満で完了しました。ステップ2のアクションをキャンセルしました。アクション出力ウィンドウは更新されませんでした。

0

上記の解決策がひとつもない場合は、MySQLサービスまたはシステム全体を一度再起動することをお勧めします。