注册

同样的sql在2个相同的数据库下,执行计划不一样

邹锦富 2023/10/16 1231 3

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 数据库1:DM Database Server 64 V8, 数据库2:DM Database Server 64 V8
【操作系统】:数据库1:UnionTech OS Desktop 20 Pro, 数据库2:银河麒麟 v10 sp1
【CPU】: 数据库1:兆芯开先KX-U6780A, 数据库2:HUAWEI Kunpeng920
【问题描述】*:同样的sql,在2个数据库中执行结果不一样,执行计划也不一样。2个数据库是一样的数据,是通过dm数据迁移工具从其中一个库迁移出来的。
业务需求:有一组数据,大概50万的地理点位信息,使用dm_geom包,使用了空间索引进行空间范围查询
查询sql:

SELECT outlet_info.id, outlet_info.uid as outletUid, outlet_info.lon, outlet_info.lat, outlet_info.sh_lon shLon, outlet_info.sh_lat shLat, outlet_info.flag_outlet flagOutlet, outlet_info.un_outlet_type as unOutletType, outlet_info.INVESTIGATE_STATUS investigateStatus, outlet_info.TRACEABILITY_STATUS traceabilityStatus, outlet_info.RENOVATION_STATUS renovationStatus, OUTLET_TRACEABILITY_INFO.OUTLET_MAX_TYPE outletMaxType from outlet_info left join region_info on region_info.region_code = outlet_info.region_code left join OUTLET_TRACEABILITY_INFO on OUTLET_TRACEABILITY_INFO.OUTLET_UID = outlet_info.uid where dmgeo.st_contains(dmgeo.ST_GeomFromText('xxxxxxxx', 4326), OUTLET_INFO.GEOM) and outlet_info.flag_del = 0

问题描述:

  • 在2个数据库中查询,执行效果不一样,查看执行计划,发现在数据库2中的查询,没有使用空间索引
  1. 数据库1中执行计划
    使用了空间索引.png
  2. 数据库2中执行计划
    未使用空间索引.png
  • 如果将and outlet_info.flag_del = 0条件去掉,数据库2中的执行计划能使用到空间索引
回答 0
暂无回答
扫一扫
联系客服