0

次のことを行う MySQL Skript が必要です。

10000 を超えるすべての link_id が削除されるまで、データベースのチャンクを削除します

例:

x = 10000
DELETE FROM pligg_links WHERE link_id > x and link_id < x+10000
x = x + 10000
...

だからそれは削除します

DELETE FROM pligg_links WHERE link_id > 10000 and link_id < 20000

それから

DELETE FROM pligg_links WHERE link_id > 20000 and link_id < 30000

10000 未満のすべての ID が削除されるまで

データベースが非常に大きいため、これが必要です(ギグ以上)

少し早いですがお礼を

4

2 に答える 2

2

このLIMITステートメントを使用して、1つのステップで削除するアイテムの数を調整できます。

DELETE FROM pligg_links
WHERE link_id > 10000
LIMIT 1000;

http://dev.mysql.com/doc/refman/5.1/en/delete.htmlによると:

DELETEに対するMySQL固有のLIMITrow_countオプションは、制御がクライアントに返される前に削除される行の最大数をサーバーに通知します。これを使用して、特定のDELETEステートメントに時間がかかりすぎないようにすることができます。影響を受ける行の数がLIMIT値より少なくなるまで、DELETEステートメントを繰り返すだけです。

SELECT ROW_COUNT();削除を自動化する場合は、を使用して削除された行の数を判別できます。

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count

于 2012-06-19T09:22:46.367 に答える
1

::の問題は何ですか

DELETE FROM pligg_links WHERE link_id > 10000

それを行う別の方法があります:(これら3つのクエリを順番に実行するだけです)

Step1 : Insert into pligg_links_temp select * from pligg_links where link_id < 10000;
Step2 : Drop pligg_links;
Step3 : Insert into pligg_links select * from pligg_links_temp
于 2012-06-19T09:19:03.213 に答える