gpt4 book ai didi

mysql - UNIX_TIMESTAMP() 是否为大型插入查询计算一次?

转载 作者:行者123 更新时间:2023-11-29 01:54:15 26 4
gpt4 key购买 nike

我做了一个测试。这是一个 innodb 表:

CREATE TABLE `test_UNIX_TIMESTAMP` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`datefrom` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)

这是一个插入:

insert into test_UNIX_TIMESTAMP (datefrom) values
(UNIX_TIMESTAMP())
,(UNIX_TIMESTAMP())
,(UNIX_TIMESTAMP())
....many many
,(UNIX_TIMESTAMP());

这里是一个查询来检查它是否是唯一的时间戳:

select distinct(datefrom) from test_UNIX_TIMESTAMP;

结果是:

After Affected rows: 106 400, we have 1 unique timestamp value in the table.

After Affected rows: 1 170 400 , we still have 1 unique timestamp value in the table.

MySQL 服务器 - 它是远程 SQL 服务器(至强 1270v3,32 内存,mysql 有 4Gb 缓存)。

对于大型插入查询,“UNIX_TIMESTAMP()”值是否固定?或者它是固定的 session ?还是我只是运气好?

最佳答案

MySQL 文档对此并不清楚。但是,它确实区分了 CURRENT_TIMESTAMP()(或 NOW())和 SYSDATE() — 前者在每个查询中计算一次,而后者在每次调用时都会被评估(并且可能会慢一点)。

您可以通过调用 SLEEP 指令的任一侧来为自己演示这一点:

mysql> select NOW() "a", SYSDATE() "b", SLEEP(2) "_", NOW() "c", SYSDATE() "d";
+---------------------+---------------------+---+---------------------+---------------------+
| a | b | _ | c | d |
+---------------------+---------------------+---+---------------------+---------------------+
| 2015-11-04 11:18:55 | 2015-11-04 11:18:55 | 0 | 2015-11-04 11:18:55 | 2015-11-04 11:18:57 |
+---------------------+---------------------+---+---------------------+---------------------+
1 row in set (2.01 sec)

如您所见,SYSDATE() 在查询期间增加,而 NOW() 保持不变。事实证明,UNIX_TIMESTAMP() 也会在每个查询中计算一次:

mysql> select UNIX_TIMESTAMP(), SLEEP(2), UNIX_TIMESTAMP();
+------------------+----------+------------------+
| UNIX_TIMESTAMP() | SLEEP(2) | UNIX_TIMESTAMP() |
+------------------+----------+------------------+
| 1446635945 | 0 | 1446635945 |
+------------------+----------+------------------+
1 row in set (2.00 sec)

关于mysql - UNIX_TIMESTAMP() 是否为大型插入查询计算一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33520066/

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