mysql - 我可以让它更快吗 - SELECT min(date_time) FROM db.event - 在 bash 脚本中使用

标签 mysql sql linux bash shell

我正在尝试缩短查询此表所需的时间。这是我们的生产表之一,因此我们无法对其进行任何更改。 我在 bash 脚本上使用以下查询

SELECT min(date_time) FROM db.event 

但是,这大约需要 20 分钟。我们在这些分区上有很多数据——大约 100GB。 bash 脚本需要收集该表中最早的记录。有没有更好的方法可以提高效率,比如说 10 分钟或更短时间?

*************************** 1. row ***************************
       Table: event
Create Table: CREATE TABLE `event` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `type` varchar(100) NOT NULL,
  `application` varchar(100) NOT NULL,
  `cdr_id` varchar(100) NOT NULL,
  `date_time` datetime NOT NULL,
  PRIMARY KEY (`id`,`date_time`),
  KEY `ix_cdr` (`cdr_id`),
  KEY `ix_type_app_cdr` (`type`,`application`,`cdr_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2985903027 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (to_days(date_time))
(PARTITION p735660 VALUES IN (735060) ENGINE = InnoDB,
...
... many partitions here
...
...
 PARTITION p735660 VALUES IN (735566) ENGINE = InnoDB)

最佳答案

您想在 date_time 上创建索引:

create index event_datetime on event(date_time)

date_time 字段必须是索引中的第一列。

编辑:

如果您不能对表格进行更改,那么您就有问题了。如果 datetimeid 相关,那么您可以:

select datetime
from event
order by id
limit 1;

但这是一个很大的假设,即最小日期在最小 id 上。

关于mysql - 我可以让它更快吗 - SELECT min(date_time) FROM db.event - 在 bash 脚本中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134712/

相关文章:

java - 在 ubuntu 18.04 中通过 eclipse 与 mySql(mysql 5.7.22) 进行 JDBC 连接时出现错误

Mysql查询优化(避免使用UNION ALL)

sql - 如何在 postgres 中选择多个不同的值和最大值?

linux - Linux 上的 SetPriorityClass 等价物

linux - 防止子进程继承父环境

mysql - 跨数据库外键,1215错误

mysql - 如何从两个表中选择并计算数据?

MySQL:将子选择和数组组合成一个 IN 语句

sql - Oracle - 如何根据属性记录对关系执行规则(简单示例)

在docker中执行命令的Python文件