小编Phi*_*son的帖子

MySql 8.0.11 空间查询慢了 100000 倍

我们已将 MySql 5.7 数据库的副本迁移到 Amazon RDS 上的 MySql 8.0.11。在可能的情况下,一切都是相同的。包含几何数据的表已被修改,因此几何列被限制为 SRID 0 并重建空间索引。两个数据库上的执行计划相同,表明查询使用的是空间索引。

在 MySql 5.7 上,以下查询需要 0.001 秒,在 MySql 8 上需要 108 秒。查看 MySql 8 上 100% 的执行统计信息“发送数据”。为什么?

SELECT r.roadid                             
FROM geocoder.osm_road r
WHERE mbrintersects(ST_Buffer(ST_GEOMETRYFROMTEXT('Point(-1.91289 52.58260)',0),0.0005), r.geometry) 
Run Code Online (Sandbox Code Playgroud)

我们有许多不同的空间查询,而且所有查询都如此,但特别是 MBRINTERSECTS 和 ST_INTERSECTS 似乎非常慢。更改为 ST_CONTAINS(在可能的情况下)会带来显着的改进(即上述需要 3 秒而不是 108 秒),但这并不适合许多查询,并且仍然比 5.7 慢了很多。

Show Create Table for 5.7

CREATE TABLE `osm_road` (
  `roadid` bigint(20) NOT NULL,
  `reference` varchar(20) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `dictionary` longtext,
  `road_speed_limit` tinyint(4) unsigned NOT NULL,
  `road_speed_unitid` tinyint(1) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql performance spatial

7
推荐指数
1
解决办法
1156
查看次数

标签 统计

mysql ×1

performance ×1

spatial ×1