1
我有一个SQL查询,我试图调试。它适用于小数据集,但是在大量数据集中,它的这个特定部分会导致它花费45-50秒而不是秒速。此子查询是较大查询中的一个选择项。基本上,我试图找出当工作最早日期是在同一类别,因为我们在看(表DR)在SQL查询子查询造成巨大的延迟
ISNULL(CONVERT(varchar(25),(SELECT MIN(drsd.DateWorked) FROM [TableName] drsd
WHERE drsd.UserID = dr.UserID
AND drsd.Val1 = dr.Val1
OR (((drsd.Val2 = dr.Val2 AND LEN(dr.Val2) > 0) AND (drsd.Val3 = dr.Val3 AND LEN(dr.Val3) > 0) AND (drsd.Val4 = dr.Val4 AND LEN(dr.Val4) > 0))
OR (drsd.Val5 = dr.Val5 AND LEN(dr.Val5) > 0)
OR ((drsd.Val6 = dr.Val6 AND LEN(dr.Val6) > 0) AND (drsd.Val7 = dr.Val7 AND LEN(dr.Val2) > 0))))), '') AS WorkStartDate,
这卷起执行键查找当前行适合一些18000000在有346,000条记录的桌子上进行。我试过在它上面创建一个索引,但没有取得任何成功。而且,在同一个查询中选择一个最大值是次要的,因为它不需要执行很多次。
任何有关尝试不同方法的建议?谢谢!
谢谢!那就是诀窍。 – Spencer 2010-04-20 17:42:24