2011-07-18 5 views
0

私は、既存のMySQL ISAMテーブルを10millionレコード分トリムしたいと思います。MySQLテーブルのトリミング

最後の5百万レコードを削除するSQL文は何でしょうか?これは単なるログテーブルであり、レコードを削除してもダメージはありません。

+0

に動作していDELETE :) にSELECTレコードは「最後」ですか? –

答えて

1
delete from table where id >= (select * from (select id from table order by id limit 4999999,1) as t) 
+0

みんな、どうやってこれらの2つをリンクするの? SELECT id、DeviceReportedTime FROM SystemEvents WHERE ID <(select * from(IDで指定したIDからシステムイベントを選択します。 SystemEventsからMAX(ID)を選択します。 – Cmag

1

DELETEでORDER BYとLIMITを使用すると、限られた数の行にしか影響を与えません。あなたが「最後の」500万を手に入れる方法は、あなたがレコードの時代を決めているものに依存し、それをあなたのORDER BYで使用します。

0

SELECT * FROM ???(youreのテーブル名)ORDER BY ?????? LIMIT 5000000

ここに??? = youreテーブル名、??????あなたがテーブルを並べ替える方法です。だから、あなたが並べ替えるために何らかの種類の日付またはエントリ数を持っているなら。
http://www.w3schools.com/sql/

上記の例ではSELECTを使用していますので、正しく動作すれば最初に試すことができます。それは仕事をしている場合、変更は、それが動作しない場合は、:)

0

によってソートする何か他のものを試してみましたよりも、これはどのようにしているのかを決定します

DELETE FROM tableA ORDER BY some_indexed_column DESC LIMIT 1000000