2011-12-03 38 views
0

我正在模擬使用mysql表的幾個指令隊列。有一個'模式'列是每個隊列的名稱,一旦從隊列中取出它們,之後立即刪除它們。典型的查詢看起來像用於隊列模擬的mysql數據庫類型

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

我目前使用MYISAM表這一點,但有一個很大的開銷與所有的刪除和優化需要很長的時間。我只是想知道是否有更有效的方法來做到這一點,如果可能數據庫應該是INNODB

+0

這些隊列預計能活多久? –

+0

隊列本身將無限期地活着,但是一個單獨的成員應該在2-3天內通過隊列 – hackartist

回答

0

InnoDB是有用的,如果你是暗示外鍵約束。 這麼一兩件事來優化你的查詢..

mode列上創建索引,也不要使用*(可能是你的表有大量的列),寫列名,你只需要以檢索。

+0

嗯,我沒有連接任何其他表格......我只需要知道哪一個快速插入和刪除沒有太多高架。感謝關於使用列名的提示......但除模式外,只有大約3個非索引列和一個索引列。 – hackartist

0

我不能說我完全理解你的問題,但我相信,如果你會做你的固定大小的Fileds(即無text領域,char代替varchar)表中的記錄變得極爲可重複使用,不需要優化可言。

+0

我認爲優化進來了,因爲有很多插入和刪除,所以MYISAM中的索引必須被「整理」。但是,謝謝我將擺脫不固定長度的一切。 – hackartist