Php 使用UNIX\u TIMESTAMP()会降低插入查询的速度吗

Php 使用UNIX\u TIMESTAMP()会降低插入查询的速度吗,php,mysql,unix-timestamp,Php,Mysql,Unix Timestamp,我必须一次完成20多条insert语句。我正在使用UNIX\u TIMESTAMP()在我的时间列中插入自历元以来的秒数 我的php时区是UTC 因此,我应该使用$time=time()插入值还是UNIX\u TIMESTAMP()就可以了。 time-返回当前Unix时间戳 如果在没有参数的情况下调用,则返回Unix时间戳(自 “1970-01-01 00:00:00”UTC)作为无符号整数 在我看来,它们是一样的。因此,我高度怀疑会有一个明显的差异,足以保证选择一个而不是另一个只是为了优化

我必须一次完成20多条insert语句。我正在使用
UNIX\u TIMESTAMP()
在我的时间列中插入自历元以来的秒数

我的php时区是UTC

因此,我应该使用
$time=time()
插入值还是
UNIX\u TIMESTAMP()
就可以了。

time-返回当前Unix时间戳

如果在没有参数的情况下调用,则返回Unix时间戳(自 “1970-01-01 00:00:00”UTC)作为无符号整数


在我看来,它们是一样的。因此,我高度怀疑会有一个明显的差异,足以保证选择一个而不是另一个只是为了优化。我的建议是,选择哪个代码更易于阅读和理解。MySQL可以一次处理大量的操作,所以做一些琐碎的事情,比如获取时间戳,几乎是瞬间完成的。

无论你做什么,都要根据功能而不是效率来决定;即使有100条insert语句,您也可能感觉不到差异

选择哪个选项应取决于您的功能要求:

  • 如果必须绝对确保每条语句的值相同,则应“缓存”
    time()
    的值,并使用该值进行插入;顺便说一句,这可以在MySQL或PHP中完成(见下文)

  • 对于所有其他,选择你喜欢的

  • <>如果你正在插入多条记录,我希望你会考虑准备好的声明;这样做实际上可以以更显著的方式加快insert语句的速度,这主要是由于代码和数据库之间传输的数据量较少。例如:

    SET @time = UNIX_TIMESTAMP();
    PREPARE stmt FROM 'INSERT INTO mytable VALUES (@time)';
    EXECUTE stmt;
    EXECUTE stmt;
    EXECUTE stmt;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    

    如果你要插入10亿行数据,而且要花上一整天的时间来插入,而且你真的想避免时间戳成为一个问题,那么问问数据是给谁的,如果你插入所有具有相同时间戳的行是否可以。然后使用单代时间戳,将其放入变量中,并将其作为所有insert语句的值。这样,每次插入时可以运行更少的代码。但这取决于数据属于谁,如果他们满意的话:)