gpt4 book ai didi

mysql - 时间戳为int字段,查询性能

转载 作者:可可西里 更新时间:2023-11-01 08:22:45 28 4
gpt4 key购买 nike

我将时间戳存储为 int 字段。在大表上,在日期插入行需要很长时间,因为我使用的是 mysql 函数 FROM_UNIXTIME。

SELECT * FROM table WHERE FROM_UNIXTIME(timestamp_field, '%Y-%m-%d') = '2010-04-04'

有什么方法可以加快这个查询的速度吗?也许我应该使用 timestamp_field >= x AND timestamp_field < y 查询行?

谢谢


已编辑此查询效果很好,但您应该注意 timestamp_field 上的索引

SELECT * FROM table WHERE 
timestamp_field >= UNIX_TIMESTAMP('2010-04-14 00:00:00')
AND timestamp_field <= UNIX_TIMESTAMP('2010-04-14 23:59:59')

最佳答案

使用UNIX_TIMESTAMP在常量上而不是列上的 FROM_UNIXTIME:

SELECT * FROM table
WHERE timestamp_field
BETWEEN UNIX_TIMESTAMP('2010-04-14 00:00:00')
AND UNIX_TIMESTAMP('2010-04-14 23:59:59')

这会更快,因为它允许数据库在 timestamp_field 列上使用索引(如果存在)。当您使用非 sargable 时,数据库不可能使用索引。列上的功能类似于 FROM_UNIXTIME。

如果您在 timestamp_field 上没有索引,请添加一个。

完成此操作后,您还可以尝试通过选择所需的列而不是使用 SELECT * 来进一步提高性能。

关于mysql - 时间戳为int字段,查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738444/

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