【发布时间】:2019-11-06 03:38:28
【问题描述】:
我有 2 张桌子,People 和 postcodelatlng。
我有大约 2,300 条记录,其中包括他们的邮政编码,以及两个用于纬度和经度坐标的空列。
postcodelatlng 是一个包含大约 160 万行的表格,其中包含英国的每个邮政编码及其各自的坐标。
我正在尝试通过匹配邮政编码来填写人员表中的坐标。当不为每个人使用大约 0.15 秒的限制时,这可以正常工作。不幸的是,一旦我设置了限制,每次运行查询时,执行时间几乎翻了一番。
SELECT people.ID, people.Postcode, postcodelatlng.latitude, postcodelatlng.longitude
FROM people
INNER JOIN postcodelatlng
ON people.Postcode=postcodelatlng.postcode
LIMIT 30
【问题讨论】:
-
包括您的表结构,以及定义的键和索引(+ 一些示例数据),可能会有所帮助。
-
在我很久以前使用 MySQL 的经验中,此类问题是 100% 的内存碎片设置导致缓冲区设置过大。我可能完全错了。但如果您发布“显示变量”和“显示统计信息”的输出可能会有所帮助。
-
你想用 LIMIT 做什么,因为没有 ORDER BY,它可能是完全随机的。
标签: mysql database optimization