日期时间mysql默认值,索引和主键

时间:2012-01-22 21:32:18

标签: mysql foreign-keys indexing

我在mysql中有很多DATE TIME列。

我应该将默认值设为无或00:00:00

同样在我的桌子上,我有一个主键,它是一个自动增量值。

我应该在我的查询WHERE子句中出现的所有列上添加索引吗?

是否建议在PRIMARY键上设置外键,是否会加速我的mysql JOINS

1 个答案:

答案 0 :(得分:2)

  

我应该将默认值设为无或00:00:00

如果可以接受“无日期”,则使用NULL。将日期时间置零只意味着您需要检查而不是NULL,但检查会更慢并且您会浪费空间/带宽来存储/检索它。

  

我应该在我的查询中出现的所有列上添加索引   WHERE子句?

不,只将索引添加到具有最大唯一值数的列。我不知道MySQL的查询规划器是否比以前更好,但是你也可以通过确保这些列首先出现在WHERE子句中来获得更好的性能。原因是,一旦您将查询结果限制为具有一个where子句的少量行,其余的子句可以使用线性扫描检查与索引一样快,因此冗余索引只是占用磁盘和(特别重要的)RAM。

  

是否可以在PRIMARY键上设置外键   它加快了我的mysql JOINS?

不,外键的目的是对数据施加有效性限制,与查询性能无关。话虽这么说,你仍然应该尽可能使用外键,因为它们提供的保证使得管理数据变得更加容易。

相关问题