2011-12-03 8 views
0

私は、mysqlテーブルを使っていくつかの命令キューをシミュレートしています。それぞれのキューの名前である「モード」列があり、キューから項目が取り出されるとすぐに削除されます。典型的なクエリは、私は現在、このためMYISAMテーブルを使用していますが、すべて削除し、最適化のオーバーヘッドの多くは、長い時間がかかるされキューシミュレーション用のmysql dbタイプ

SELECT * FROM queue_table WHERE mode='queue1' LIMIT 50. 

のように見えます。私はこれを行うためのより効率的な方法があったのかどうか、またおそらくデータベースがINNODBであるべきかどうか疑問に思っていました。

+0

これらのキューの存続期間はどのくらいですか? –

+0

キュー自体は無期限に存続しますが、個々のメンバーは2〜3日以内にキューを通過する必要があります – hackartist

答えて

0

InnoDBは、外国キーの制約を暗示している場合に便利です。 ので、あなたのクエリを最適化するための一つのことは...

mode列にインデックスを作成しても、(あなたのテーブルかもしれ列がたくさんある)*を使用するだけretriveする必要がある列の名前を書いてはいけません。

+0

他のテーブル間をリンクしていません...どちらを挿入したり削除するのが速すぎるのかを知る必要がありますオーバーヘッド。列名の使用についてのヒントをありがとうございます...しかし、モードの外に約3つの非インデックス列と1つのインデックス列があります。 – hackartist

0

テーブルのレコードが非常に再利用可能になり、まったく最適化を必要としない(すなわち無textフィールド、代わりにvarcharchar)私は、私は完全にあなたの問題を理解すると言うことはできませんが、私はあなたが固定サイズのあなたのfiledsを作ればことを確信しています。

+0

私は、挿入と削除が多いので、最適化が行われると思います。そのため、MYISAMのインデックスを「デフラグ」する必要があります。しかし、固定長ではないすべてのものを取り除くことに感謝します。 – hackartist