我想執行下面的查詢,但它需要12秒來執行。簡化一個mySQL查詢
SELECT t.*,
tt.*
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy IN ('category')
ORDER BY t.name ASC
是他們的任何方法來簡化查詢,以達到相同的結果與延遲較少。
我想執行下面的查詢,但它需要12秒來執行。簡化一個mySQL查詢
SELECT t.*,
tt.*
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy IN ('category')
ORDER BY t.name ASC
是他們的任何方法來簡化查詢,以達到相同的結果與延遲較少。
您可能會 SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id WHERE tt.taxonomy = 'category' ORDER BY t.name ASC
獲得更好的性能,通過消除IN
;但除此之外 - 你的瓶頸將是JOIN
。確保你的桌子有適當的索引,如果他們太大了...好吧,這需要時間。
除非必須,否則請勿使用IN
。
WHERE tt.taxonomy = 'category'
我想看看如何以任何方式更改查詢執行時間。 – fancyPants
我發現這一點,而環顧四周:http://bugs.mysql.com/bug.php?id=30330但這幾乎意味着相反...編輯:它應該指出,這也是一個錯誤從一個非常舊版。 – SubSevn
或者提問者可以試試看。 – catfood
嘗試在term_id上添加索引。
您必須添加索引和使用「=」而不是「IN」
您是否需要這兩個表中的所有數據,或者您是否選擇t。*和tt。*,因爲它的代碼更快?
您可以將您從陳述中選擇的內容配對。
你也可以通過聲明添加一個組。這可能會減少您的行數並提高性能。
'wp_terms'和'wp_term_taxonomy'有多少數據?表格是否被索引? –
按優先順序排序:1.在(tt.term_id,tt.category)上提供和索引。 2.在t.name上提供索引。 3.命名你實際想要返回的列。順便說一句,只有按照慣例,我們傾向於在沒有WHERE條件的情況下將WHERE條件加入到表中 - 而不是相反。 – Strawberry