我在使用 select 关键字创建表时遇到问题(它运行得很慢)。该查询仅获取具有最新输入日期的动物的详细信息。该查询将用于内部连接另一个查询。
SELECT *
FROM amusementPart a
INNER JOIN (
SELECT DISTINCT name, type, cageID, dateOfEntry
FROM bigRegistrations
GROUP BY cageID
) r ON a.type = r.cageID
但是由于性能缓慢,有人建议我采取措施来提高性能。 1)使用临时表,2)存储结果并使用它并将其连接到其他语句。
use myzoo
CREATE TABLE animalRegistrations AS
SELECT DISTINCT name, type, cageID, MAX(dateOfEntry) as entryDate
FROM bigRegistrations
GROUP BY cageID
不幸的是,它仍然很慢。如果我只使用select语句,结果将在1-2秒内显示。但如果我添加创建表,查询将需要很长时间(大约 25 分钟)
有什么好的方法可以缩短查询时间吗?
编辑:大注册表的大小约为 350 万行
最佳答案
您可以尝试用下面的方式查询来实现查询是只获取最新输入日期的动物的详细信息。该查询将用于内部连接另一个查询
,您使用的查询不会根据您的要求获取记录,并且速度会更快:
SELECT a.*, b.name, b.type, b.cageID, b.dateOfEntry
FROM amusementPart a
INNER JOIN bigRegistrations b ON a.type = b.cageID
INNER JOIN (SELECT c.cageID, max(c.dateOfEntry) dateofEntry
FROM bigRegistrations c
GROUP BY c.cageID) t ON t.cageID = b.cageID AND t.dateofEntry = b.dateofEntry
建议对 cageID
和 dateofEntry
建立索引
关于mysql - 查询快建表慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755654/