关于分页时有多个过滤条件的优化问题
来源: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子句靠后位置,比如说你的条件对索引字段加上了函数计算,这个就无法使用索引。
10 -
SuccessorSocialism
2020-08-31
将你的大于等于和小于等于判断 改成 between and
如:
acquire_time between #{acquireTimeStart} AND #{acquireTimeEnd}cloud_cover between #{cloudPercentMin} AND #{cloudPercentMax}
然后你在看看执行SQL分析语句看看 是否走索引了 如果没有的话 则可以建立复合索引00
相似问题