Php 在MySQL中使用时间而不是字符串CURRENT_DATE是一个好主意吗?
我决定在MySQL中使用时间而不是字符串日期,但我想知道这是否是一个好主意。例如,我使用:Php 在MySQL中使用时间而不是字符串CURRENT_DATE是一个好主意吗?,php,mysql,Php,Mysql,我决定在MySQL中使用时间而不是字符串日期,但我想知道这是否是一个好主意。例如,我使用: 1268557200 而不是: Sun, 14 Mar 2010 09:00:00 GMT 谢谢。当然是特殊类型的更好。数据库针对此类类型进行了优化。例如,您的字符串中有很多字符,日期类型在内部是int或long,只需要4或8个字节。通常使用最接近您试图存储的数据的类型最有意义。也就是说,如果数据是面向日期的,则使用面向日期的字段。它们在内部以数字的形式存储,这在访问、存储、排序等方面比字符串快得多。
1268557200
而不是:
Sun, 14 Mar 2010 09:00:00 GMT
谢谢。当然是特殊类型的更好。数据库针对此类类型进行了优化。例如,您的字符串中有很多字符,日期类型在内部是int或long,只需要4或8个字节。通常使用最接近您试图存储的数据的类型最有意义。也就是说,如果数据是面向日期的,则使用面向日期的字段。它们在内部以数字的形式存储,这在访问、存储、排序等方面比字符串快得多。其优点是,您可以像访问字符串一样访问(输入和输出),但它们的工作方式和排序方式与数字类似
重要的一点是不要在查询中使用日期数学。在编写SQL之前,在代码中进行计算(添加天数、减去小时等)。这使您可以充分利用索引、查询缓存等功能。有一些优化可以让您不必将日期数学留在SQL中,但陷阱可能并不明显。因此,除非你确定你所做的是优化的,否则一个好的经验法则就是不要在SQL中进行计算。你会将整数存储在varchars中并每次解析吗?不,我会将整数存储在int中这就是精神:)mysql为你想要使用的确切类型提供了大量优化和实用程序。如果使用数据类型而不是它们的本意,那么就很少有优势了