1
我有以下的SQL查詢,我想優化它的工作更快。Sql選擇多個值從選擇與許多聯接
select dv.Id, dv.Version, cvco.Time
from DVPST dvps -- cca. 10 000 entries
inner join DVPCT dvpc ON dvps.Value = dvpc.Value
inner join DVPT dvp on dvpc.Id = dvp.Id
inner join DVT dv on dvp.Id = dv.Id
inner join CVCOT cvco ON dv.Id = cvco.Id
inner join DT doc on doc.Id = dv.Id
where dvps.ValueStr in ("value1", "value2", ..., "value1000")
執行計劃評估所有使用正確的索引,但它仍然需要這麼長時間。 WHERE條件應該過濾從DVPCT表,所以只有這在大多數情況下評估所有條目:
select dv.Id, dv.Version, cvco.Time
from DVPST dvps
where dvps.ValueStr in ("value1", "value2", ..., "value10000")
爲什麼查詢仍然執行時,它什麼都沒有參加那裏的聯接。
非常感謝您的任何想法, 馬立克
謝謝!第二個查詢真的很快,也適用於MySQL。需要連接,我減少了查詢,使其更具可讀性。 – Marek