gpt4 book ai didi

mysql - 优化 MIN & MAX 查询

转载 作者:行者123 更新时间:2023-11-28 23:14:48 27 4
gpt4 key购买 nike

我的数据库表包含超过 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

上述查询将为您提供最近 1 000 000 行的 MIN AND MAX,created_date

最佳答案

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

这个索引可以帮助一些:

INDEX(created_date)

重读问题

最近的日期只是MAX(created_date)。第百万个日期是`( SELECT created_date FROM network ORDER BY created_date DESC LIMIT 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;

汇总表

CREATE TABLE Dates (
create_date DATETIME NOT NULL,
ct INT UNSIGNED NOT NULL,
PRIMARY KEY(ct)
) ENGINE=InnoDB;

然后,每隔一小时(或其他时间单位),统计记录的数量并存储在那里。

要找到 MIN(created_date) 有点乱;这意味着对该表求和以找出计数何时加起来约为 1M,并声明它发生的时间(或其他时间)。

或者(可能更好)是捕获每个第 1000 行的确切 DATETIME。这意味着要经常探测 network,并且只存储 created_date(删除 ct 列)。然后找到 1M 前的近似时间:

SELECT created_date
FROM Dates
ORDER BY created_date DESC
LIMIT 1000, 1

(并将其用作 Min. 的子查询)

关于mysql - 优化 MIN & MAX 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44362493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com