sql 服务器查询中的优化

Optimization in sql server query

我的存储过程中的 Below 查询需要更多 time.Is 下面有什么方法可以优化 query.Input 参数是 Name 和 CA。

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='"'+@NAME+'"' AND va2.value='["'+@CA+'"]'
ORDER BY va.e_id

我们现在看到,与流行的观点相反,IN / EXISTS 查询在 SQL 服务器中的效率不低于 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,
...