2012-10-24 56 views
0

我有一個mysql內存表,其中包含的優先級分配給每一行。我每2分鐘創建一個表,並且這個表幾乎被調用100次/秒。選擇查詢如何在內部檢索數據?

它包含大約800行。

查詢我運行的是這樣的:

select * from table order by priority limit 0,20 

我想優化這個query.Can我把數據的排序順序在創建表,可以假設拉數據將始終進行排序基於優先級如果我刪除the order by子句。

感謝

+0

你用什麼來使用數據庫? PHP? –

+0

是的..我使用PHP來連接到MySQL .. – shashuec

回答

0

我有兩個建議:

  1. 如果創建此表並創建後不修改它,然後創建和填充之後做到這一點ALTER TABLE table ORDER BY priority。這將排序你的桌子,你可以放棄你的訂購。
  2. 請勿使用mysql來訂購您的結果。使用php

也不要忘記索引。如果你沒有關閉mysql結果緩存,那麼你所有的選擇都被緩存,並且不計算結果。所以你必須檢查你的配置。更多here

+0

我guess.we不能回覆在選擇查詢插入順序。請檢查此:http://stackoverflow.com/questions/1949641/mysql-row-order-for -select-from-table-name – shashuec

+0

是的,我的建議是在插入後改變表格,並假定你不會在修改後修改它。 –

+0

問題是,這是行不通的,如果我有條件的地方。我的數據也是其他列的索引。 – shashuec

0

有三樣東西,你可以在實際的HTML/PHP端做數據庫方面的& 1來優化這個查詢:

  1. 使用的ISAM表「優先」收錄@http://dev.mysql.com/doc/refman/5.0/en/create-index.html &也使它儘可能小,例如'優先'SMALLINT(3)UNSIGNED ZEROFILL。 最後一點,限制,你已經得到了。

  2. 使用操作碼緩存器來緩存結果並將其直接傳遞給人們的瀏覽器,如果信息只是經常更改而不需要重新查詢數據庫,例如http://en.wikipedia.org/wiki/List_of_PHP_accelerators