sql server优化问题
语句中有一条:
convert(CHAR(15), v1.finterid) + convert(CHAR(15), u1.fentryid)
NOT IN
(SELECT convert(CHAR(15), fdinterid) + convert(CHAR(15), fdentryid) FROM icclientver)
做了函数计算,用不到索引,导致整个语句执行很慢
语句是应用内置的,无法修改,sql server又没有函数索引,求助要如何优化?
------解决方案--------------------从代码来看,not in/not exists恐怕不是root cause,而是convert的拼接和转换,如果你的查询总是char(15),可以考虑用计算列预存convert之后的值,然后not exists
------解决方案--------------------可以把语句改成 LEFT JOIN ,在where做为空的筛选。例如
select v1.* from table v1left join icclientver v2 on v1.finterid = v2.finterid and v1.fentryid = v2.fentryid
where v2.finterid is null