2013-01-10 90 views
1

我有一個下面的查詢如何優化這一聯合查詢

SELECT `id`,'event' as type FROM `oc_event` where `Owner_id` = 1 
    UNION ALL 
    SELECT `id` ,'business' as type FROM `oc_business` where `Owner_id` = 1 
    UNION ALL 
    SELECT `id`, 'parts' as type FROM `oc_listing` where `Owner_id` = 1 

雖然結果是準確的,但其安靜的慢行時獲取的數量爲1K以上的周圍.. 有什麼樣的的mysql關鍵字來優化這個簡單的查詢,或者你做的事情「聯盟所有」是正確的方式?

PS:我使用的PDO

+2

您是否在'Owner_id'上編制索引? –

+0

你已經在你的工會的所有查詢條款命令? –

+0

@HamletHakobyan否,theres沒有索引,並且我無法更改數據庫結構:( – Christopher

回答

1

,如果你想顯示重複的數據,那麼它是很好的使用UNION ALL 其他合理利用工會 當單列發現 將停止union_result會走得更快

爲了讓您的查詢更好在owner_id上創建索引所有表格

+0

你確定嗎?UNION'更快'UNION ALL'? –

+0

在我看來,yes union是好的,但是在選擇幾行時你不會失去差別(你可以實現這個用途僅在具有大量數據的生產環境中) – vidyadhar

+0

嘗試將'UNION'用於修訂索引列和'UNION ALL',然後在執行計劃中看到差異 –