今天接到一用户的邮件,说是使用ST_Geometry SQL 查询 效率很低
刚开始在我机器上运行 竟然给搞蓝屏了,可能是我这几天没有关机的原因吧,不过重启机器运行竟然运行了两分钟
根据上面的SQL语句我们可以看到GHH是一个点层,共有12980个点,是将几个多点缓冲300 与点层做相交,得到相交个数
参考运行结果
可以看到走的全表扫描,我是使用了走索引的操作符(ST_WITHIN) 但是怎么又走全表扫描了,在同事LiuF的帮助下发现一个小细节
t.shape.srid,是不是这个有问题,我们将t.shape.srid换成相应的SRID值
差距好大啊,而且走索引了
我们可以看一下
原因原来是这样啊,使用t.shape.srid就会全表扫描每一个要素的获得其Srid,这样无疑降低了查询效率
可以见一个小小的细节对效率的影响竟然这么巨大