由於某些原因,這些2個等價查詢的成本差別很大。Mysql上奇怪的查詢成本或
select p.*
from properties p
where owner_phone = '+598 99 554 718'
or p.id in (
select pop.property
from property_other_phones pop
where pop.phone='+598 99 554 718'
)
雖然這另一個:
select p.*
from properties p
where
p.id in (
select id
from properties
where owner_phone = '+1 781-953-6380'
)
union select p.*
from properties p
where
p.id in (
select pop.property
from property_other_phones pop
where pop.phone='+1 781-953-6380'
)
你們是否有一些線索?
Conext:MySQL的16年7月5日
的查詢不看我也一樣。 –
這兩個查詢返回的結果可能看起來是等價的,但這兩個查詢看起來與MySQL不同*歷史上,MySQL繼續使用'OR'謂詞生成不太理想的查詢計劃的傳統。 – spencer7593