为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:有以下查询语句
select
count(1)
from
t
where
dmgeo.ST_CONTAINS(dmgeo.ST_GeomFromText(‘MULTIPOLYGON(((117.264777818109 47.0995356940069,
xxxx xxxxxx,xxxx…)))’,0), shape);
相同的数据量在MySQL库查询需要18s,DM需要500s,通过在DM中建立空间索引可以优化为90s左右,是否还有更好的优化方法
ET
在达梦的空间索引使用时,应以第一列为需要进行筛选的列,第二列为查询的数据。可以将改SQL改为:
select
count(1)
from
t
where
dmgeo.ST_WITHIN(shape, dmgeo.ST_GeomFromText(‘MULTIPOLYGON(((117.264777818109 47.0995356940069,
xxxx xxxxxx,xxxx…)))’,0));
此处用ST_WITHIN替换ST_CONTAINS源于SQL中第一第二个空间数据对象的位置进行了互换,使用包含关系相反的ST_WITHIN以得到正确结果。