我决定在 MySQL 中使用时间而不是字符串日期,但我想知道这是否是个好主意。例如我使用:
1268557200
代替:
Sun, 14 Mar 2010 09:00:00 GMT
谢谢。
当然是特殊类型更好。该数据库针对此类类型进行了优化。例如,您的字符串有很多字符,日期类型在内部是整数或长整数,只需要 4 或 8 个字节。
使用最能代表您尝试存储的数据的类型通常是最有意义的。也就是说,如果您的数据是面向日期的,则使用面向日期的字段。这些在内部存储为数字,这绝对比字符串更快地访问、存储、排序等。优点是您可以像访问字符串一样访问(输入和输出),但它们的工作和排序就像数字一样。
重要的一点是不要在查询中使用日期数学。在编写SQL之前,在代码中进行数学运算(添加天数、减去小时数等) 。这使您可以充分利用索引、查询缓存等。有一些优化可以让您摆脱将日期数学留在 SQL 中的情况,但可能并不明显缺陷在哪里。因此,除非您确定自己所做的事情已经过优化,否则一个好的经验法则是将计算排除在 SQL 之外。