私は以下のようなテーブル設定をしています。MySQLのオーバーヘッド、私のクエリが間違っているか、私はテーブルを最適化する必要がありますか?
Table comment_flags
user_id
comment_id
彼らはミスを犯したかもしれないので、私は、フラグにユーザーがコメントを許可し、それらにそれをフラグ解除するためのオプションを与えます。
問題は、私がレコードを削除した後で、コメントのフラグを解除すると、コメントが5つしかコメントになっていなくても、comment_flags
テーブルはおよそ30-40バイトのオーバーヘッドになります。
は、相続人は基本的に起こっていただきました!: -
ユーザーフラグのコメントを、私はcomment_flags
テーブルにuser_id
とcomment_id
を挿入し、その後、ユーザーがコメントをunflagsと私はuser_id
とcomment_id
によりcomment_flags
テーブルから削除します。
私はそれが問題を引き起こしている私のSQL thatsだとは確信していませんが、私はそれが一般的にDELETE
の文であると思います。
DELETE
ステートメントがテーブルをクリーンアップするたびにテーブルを最適化できました。
これは良い考えですか?他の人はどうやってこれに対処していますか?
私のSQLは非常に基本的です。
INSERT INTO comment_flags VALUE('$user_id', '$comment_id')
DELETE FROM comment_flags WHERE user_id = '$user_id' AND comment_id = '$comment_id'
この値はどこから取得していますか? –
テーブルを切り捨てて最適化する。この後、私が持っているコードを試してみると、約5分のUnflagsの後で、phpMyAdminに表示されているように、オーバーヘッドは約30-40bytesになります。 –
http://stackoverflow.com/questions/634257/innodb-does-空きスペースが占有している行の再利用 – hafichuk