关于分页时有多个过滤条件的优化问题

来源:5-5 千万记录,如何快速商品分页?

Mr_Xi

2020-08-30

老师您好,在分页查询的时候如果分页的SQL语句有多个where条件过滤的话而且有范围筛选的情况下有没有好的优化办法,例如下面的SQL语句

SELECT entity_id,acquire_time,sate_id AS satellite_id,
           sensor_id, cloud_cover AS cloud_percent,AsText(boundary) AS boundary,quick_view_url,
            AsText(cloud_area) AS cloud_area
    FROM vsgs_image_spaceview
    WHERE
      acquire_time>=#{acquireTimeStart} AND acquire_time<=#{acquireTimeEnd}
      AND cloud_cover>=#{cloudPercentMin}  AND cloud_cover<#{cloudPercentMax}
      AND resolution>=#{resolutionMin}  AND resolution<#{resolutionMax}
      AND ST_Intersects(boundary,ST_GeometryFromText(#{geometry}))
    ORDER BY acquire_time,cloud_cover,resolution
写回答

2回答

神思者

2020-08-30

把能过滤掉最多数据或者带索引的条件写到where子句里面的靠前位置。无法使用索引的条件写到where子句靠后位置,比如说你的条件对索引字段加上了函数计算,这个就无法使用索引。

1
0

SuccessorSocialism

2020-08-31

将你的大于等于和小于等于判断 改成 between and 
如:
acquire_time between #{acquireTimeStart} AND #{acquireTimeEnd}

cloud_cover between #{cloudPercentMin}  AND #{cloudPercentMax}
然后你在看看执行SQL分析语句看看 是否走索引了  如果没有的话 则可以建立复合索引

0
0

阿里新零售数据库设计与实战 (升级版)

解锁“新零售”业务让数据库实战能力再上一层楼

2101 学习 · 701 问题

查看课程