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