系统中有表Crawler_Images,在表数据达到百万时,以下SQL运行缓慢
SELECT img.ImageID_int, RemoteURL_nvarchar FROM Crawler_Images img WHERE img.isFetchSuccess_bit = 0 and img.FetchFailTimes_int<2
1 建立索引 Create Index index_1 ON Crawler_Images(isFetchSuccess_bit, FetchFailTimes_int)
查找时,通过了索引扫描,速度提高了,但未满足业务要求
2 调整语句
SELECT img.ImageID_int,
ProductID_int,
RemoteURL_nvarchar, LocalPath_nvarchar
FROM Crawler_Images AS img,
(
SELECT TOP 10 ImageID_int
FROM Crawler_Images img
WHERE img.isFetchSuccess_bit = 0
AND img.FetchFailTimes_int <=1
AND FetchFailTimes_int >= 0
) AS tmp
WHERE img.ImageID_int = tmp.ImageID_int
在子查询中,根据索引扫描查找ImageID_int,ImageID_int为主键, 再进行联合索引查找,提高了查询速度。
本文针对大量数据表Crawler_Images的SQL查询效率问题,提出了建立索引和调整查询语句两种解决方案。通过创建联合索引并优化查询逻辑,显著提升了查询速度。

1071

被折叠的 条评论
为什么被折叠?



