我有兩個表。第一個包含所有項目信息,第二個包含帶有類別ID的項目ID。原因是因爲一個項目可以在多個類別中。我的桌子上有大約50萬件物品。MySQL選擇查詢加入和大量的結果優化
下面是一個選擇查詢爲例:
SELECT SQL_CALC_FOUND_ROWS items.*
FROM items
INNER JOIN cat
ON items.iid=cat.iid
WHERE (items.expire>'1308061323' AND cat.cid = '1')
AND (items.code=71 OR items.code=23)
ORDER BY price DESC
LIMIT 0, 50
- IID =項ID
- CID =類別ID
- 代碼=我只使用用於搜索的代碼。
- 到期=到期時間爲 項目
因爲我想顯示的總匹配結果我使用SQL_CALC_FOUND_ROWS。我在頁面上只顯示50個項目(限制0,50)。
當我執行該查詢時,我的php頁面需要大約5秒鐘的時間才能加載(小於1而沒有查詢)。
- 有沒有辦法優化它?
- 使用SQL_CALC_FOUND_ROWS或使用SELECT COUNT(*)的第二個查詢會更快嗎?
- 我聽說過索引,但我不知道如何使用它們以及它們的功能。他們能幫忙嗎?
你對這兩張桌子有什麼指數?請發佈(在問題中添加表格的定義)。 – 2011-06-14 14:52:44