在sql server查询中优化
问题描述:
我在我的存储过程中查询需要更多时间。是否有任何方法可以优化下面的query.Input参数是Name和CA.在sql server查询中优化
SELECT @E_ID=vb.e_id
FROM VALUES va, mappings im, VALUES va2
WHERE im.pv_name=vb.value
AND va.E_ID in (select e_id from listings where id = 200)
AND va.f_id=100
AND va2.f_id=101 AND va.e_id=va2.e_id
AND im.w_i_name='"'[email protected]+'"' AND va2.value='["'[email protected]+'"]'
ORDER BY va.e_id
答
我们现在看到,与流行的观点相反,IN/EXISTS查询的效率并不比SQL Server中的JOIN查询低。但JOIN查询在非索引表上效率较低。我不知道,但你可以如下这样修改:
SELECT @E_ID=vb.e_id
FROM VALUES va, mappings im, VALUES va2
join (select e_id from listings where id = 200) tmp on tmp.e_id = va.E_ID
WHERE im.pv_name=vb.value
答
我会做的第一件事是要确保的是,任何一个领域中的WHERE子句和ORDER BY子句是索引提及。
我会做的第二件事是请尝试以下操作:
...
LEFT JOIN listings on va.E_ID = listings.e_id WHERE listings.id = 200
...
(虽然我会感到惊讶,如果查询优化器不会照顾这)
的第三件事我会做正在尝试以下操作:
...
(SELECT * FROM VALUES WHERE f_id=100) va,
(SELECT * FROM VALUES WHERE f_id=101) va2,
...
你应该看看到执行计划,有你看看哪个运营成本多少,比你可以优化你USI – DotNetDev
哪个DBMS NG? –