【发布时间】:2016-05-07 16:55:06
【问题描述】:
所以我需要运行一个我不知道 UUID 的查询 - 但需要找到它...所以我使用街道编号、街道名称和公司 UUID 来查找它
我有几百万条记录,这个耗时查询大约需要一个小时!!
有什么建议可以加快速度吗?
gisPoints
UUID Indexed Unique varchar(36)
street_num int(11)
street_name varchar(128)
geoPoint_temp
UUID Indexed Unique varchar(36)
street_num int(11)
street_name varchar(128)
gcomUUID Indexed varchar(36)
update geoPoint_temp as temp JOIN gisPoints as `prod` on prod.gcomUUID=temp.gcomUUIDand prod.street_num=temp.street_num and prod.street_name REGEXP(temp.street_name)
set temp.UUID=prod.UUID,temp.customerUUID=prod.customerUUID WHERE temp.`uploadstate` = '1'";
【问题讨论】:
-
您的查询中发生了什么?我看到您正在执行更新,但是在什么表上?您是否正在执行 JOIN 操作以创建“临时表”,然后更新该临时表?还是您想更新已经存在的表?
-
我将 gisPoints 中的 UUID 插入到 geoPoint_temp 表中
-
我知道,但是当您执行
JOIN操作时,您正在创建一个临时表。因此,如果我有例如SELECT a.ID, b.DATE FROM a JOIN b ON a.ID = b.ID,我将创建一个既不是a也不是b的表。因此,您的代码当前正在执行UPDATE (your join code) SET ...,您的连接代码正在创建一个临时表。你同意我更新的表是临时的吗? -
好吧...有道理,我正在更新 geoPoint_temp,而不是临时表
-
您的表格是否正在更新?过了一小时后更新了吗?
标签: php mysql sql query-optimization