mysql - 查询快建表慢

标签 mysql sql

sample data

我在使用 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

建议对 cageIDdateofEntry 建立索引

关于mysql - 查询快建表慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755654/

相关文章:

PHP MySQL LIKE 命令无法正常工作

mysql - Sails.js - 水线模型 - 与自身的关联

sql - Excel中的VS 2013 SSAS多维项目钻取表忽略格式

mysql - 两个不同的 View 具有不同的数据库排序顺序(default_scope)

mysql - MySQL 中何时使用单引号、双引号和反引号

sql - 查找具有特定值的表、列

mysql - 来自子查询的组连接非常慢

php - Laravel 5.4 - 查询生成器问题

mysql - 在一个表的查询中同时选择和计数

mysql - 如何从一个表或另一个表中获取相同类型的行以及有关它来自哪个表的信息