一次SQL慢查询

概述:
一个导出数据的小服务,采用简单的语句拼接,在数据量较小时,未发生超时问题。

因为原始数据存在冗余数据,即存在部分列中行重复的情况,开始时为排除这种情况。拼接SQL字符如下

select vid,vName,vCompany,vPhone,vMailBox,vSex,vCreatTime from cmdata.dbo.Contact where  iUserId='xxx' and vid !=''  and iSerial in (select min(iSerial) from cmdata.dbo.Contact   where  iUserId='xxx' and vid !=''   group by vid)

就是上述语句,针对7000条数据,查询时间已经无法忍受(时间长的不好意思写),问题就在级联查询中

级联查询的语句中选用 Serial的最小值,将上述语句修改

select vid,vName,vCompany,vPhone,vMailBox,vSex,vCreatTime from cmdata.dbo.Contact where  iUserId='xxx' and vid !='' Order By iSerial

Order By 默认为升序排列 等同于 min(iSerial)
虽然没有实现去重,但是在相关实现编码中使用Dictionary,TryAdd实现去除重复的需求

你可能感兴趣的:(一次SQL慢查询)