首页 文章

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

提问于
浏览
0

我在mysql中有很多DATE TIME列 .

我应该默认为无或00:00:00

我的 table 上还有一个主键,它是一个自动增量值 .

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

是否建议在PRIMARY键上设置外键,它会加快我的mysql JOINS 吗?

1 回答

  • 2

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

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

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

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

    是否建议在PRIMARY键上设置外键,它会加快我的mysql JOINS吗?

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

相关问题