这实际上是我在此处询问的关于如何提高SELECT
简单只读数据库的查询性能的先前问题的后续。长话短说,然后我找到了这个问题和自写答案,它可能会解决我的问题,但是我在理解该页面上显示的 SQL 语句之一时遇到了一些麻烦。
您可以在我的原始问题中找到更多详细信息,但总而言之,我的表格如下所示:
`squares` (
`square_id` int(7) unsigned NOT NULL,
`ref_coord_lat` double(8,6) NOT NULL,
`ref_coord_long` double(9,6) NOT NULL,
PRIMARY KEY (`square_id`),
KEY `ref_coord_lat` (`ref_coord_lat`),
KEY `ref_coord_long` (`ref_coord_long`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
在每个选择查询 1.40-1.45 秒时执行太慢,我不喜欢。我发现的 Q+A 建议将数据库从 切换InnoDB
到MyISAM
以支持 MySQL 的空间扩展。我现在已经这样做了,并创建了一个NOT NULL
,列,我打算分别用和GEOMETRY POINT
的纬度和经度坐标填充该列。唯一的事情是我实现这一点的查询根本不起作用。我不知道为什么。ref_coord_lat
ref_coord_long
这是用于填充几何列的答案的查询:
GeomFromText(CONCAT('LINESTRING(', start_ip, ' -1, ', end_ip, ' 1)'))
这是我为了我的目的而进行的改编尝试:
UPDATE `squares` SET `coordinate` = PointFromText(CONCAT('POINT(', ref_coord_lat, ref_coord_long, ')'))
除了这不起作用。
phpMyAdmin 没有提醒我任何 SQL 语法错误,事实上,我得到的只是一个绿色的“已完成”框,它通知我“0 行受到影响(查询耗时 0.00007 秒)”。
任何想法为什么我的查询无法正常运行?