Mysql 优化最小和最大查询
我的数据库表由1000多万条记录组成。我正在编写一个查询,其中包含已编制索引的created_date列上的MIN和MAX函数。但是,当我运行select语句时,它花费了太多的时间,有时执行时间结束,并且没有收到任何输出 有没有办法优化我的查询。下面是我正在尝试的问题Mysql 优化最小和最大查询,mysql,indexing,max,query-optimization,min,Mysql,Indexing,Max,Query Optimization,Min,我的数据库表由1000多万条记录组成。我正在编写一个查询,其中包含已编制索引的created_date列上的MIN和MAX函数。但是,当我运行select语句时,它花费了太多的时间,有时执行时间结束,并且没有收到任何输出 有没有办法优化我的查询。下面是我正在尝试的问题 SELECT MIN(created_date) AS Min, MAX(created_date) as Max FROM network ORDER BY id DESC LIMIT 1000000 上面的查询将为您提供最新
SELECT MIN(created_date) AS Min, MAX(created_date) as Max FROM network ORDER
BY id DESC LIMIT 1000000
上面的查询将为您提供最新1000000行的最小和最大创建日期
SELECT MIN(created_date) AS Min,
MAX(created_date) AS Max -- Get min and max from the 1M rows
FROM (
SELECT created_date
FROM network
ORDER BY created_date desc
LIMIT 1000000
) AS recent -- Collect the latest 1M rows
该指数将有助于:
重读问题
最新日期只是MAXcreated\u date。第一百万个日期是“按创建日期描述限制从网络订单中选择创建日期1000000,1
所以,这是第一个选择:
SELECT ( SELECT created_date FROM network
ORDER BY created_date DESC LIMIT 1000000, 1 ) AS Min,
MAX(created_date) AS Max
FROM network;
汇总表
然后,每小时或其他时间单位,计算记录的数量并将其存储在那里
找到Minu date有点乱;这意味着通过该表求和,找出计数加起来的时间约为100万,并声明发生的时间或其他时间
或者,最好是捕获每1000行的确切日期时间。这意味着要频繁地探测网络,并将创建的日期存储在ct列中。然后这将找到100万年前的大致时间:
SELECT created_date
FROM Dates
ORDER BY created_date DESC
LIMIT 1000, 1
并将其用作最小值的子查询。上述查询不会为您提供最新1000000的最小值和最大值。ORDER BY和LIMIT子句是在聚合发生后应用的,因此是多余的。@您可以为此写下优化查询的原因是什么?最近1000000行的最大值和最小值?谢谢Rick。但我的要求是在0-5秒内得到结果。目前,您发布的查询大约需要13-20秒。如果1M不一定要精确到该值,我可以建议一种使用汇总表的方法,该方法可能需要不到一秒的时间。欢迎您的建议。请让我解释一下汇总表3和更多建议
CREATE TABLE Dates (
create_date DATETIME NOT NULL,
ct INT UNSIGNED NOT NULL,
PRIMARY KEY(ct)
) ENGINE=InnoDB;
SELECT created_date
FROM Dates
ORDER BY created_date DESC
LIMIT 1000, 1