海量数据下,索引查找比索引扫描的优势体现

来源:互联网 发布:java集合编程题 编辑:程序博客网 时间:2024/06/17 06:18

    系统中有表Crawler_Images,在表数据达到百万时,以下SQL运行缓慢

        SELECT img.ImageID_int, RemoteURL_nvarchar FROM Crawler_Images  img WHERE img.isFetchSuccess_bit = 0 and img.FetchFailTimes_int<2

 

     建立索引  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为主键, 再进行联合索引查找,提高了查询速度。