|
|
1
6
只使用
|
|
|
2
6
从事件列表中选择*,其中startat>='2009-04-20'和startat<'2009-04-21' 这将有效地使用startat上的索引,并正确处理边界条件。(任何包含函数的WHERE子句都无法使用索引-它无法知道表达式结果的顺序与列值的顺序相同。 使用两列有点像用列表示实数的整数和小数部分。如果你不需要时间,一开始就不要节省时间。 |
|
|
3
2
你可以试试这样的SMF
|
|
|
4
2
这两个世界中最好的一个怎么样——拥有一个使用单个日期时间列的表和一个同时提供日期和时间字段的表视图。
|
|
|
5
2
单独的日期和时间字段或1个日期时间字段之间真正需要考虑的是索引。您不想这样做: 从事件列表中选择*,其中date(startat)='2009-04-20' 在日期时间字段上,因为它不会使用索引。MySQL会将startat数据转换为日期进行比较,这意味着它不能使用索引。 您想这样做: 从“2009-04-20 00:00:00”到“2009-04-20 23:59:59”之间开始的事件列表中选择“*” datetime字段的问题在于,不能真正将其用作复合索引,因为该值相当唯一。例如,startat+事件的复合索引不允许您搜索日期+事件,只允许搜索日期时间+事件。 但是,如果在日期和时间字段之间拆分数据,则可以为StartDate+事件编制索引,并高效地搜索它。 这只是一个用于讨论目的的例子,显然您可以在event+startat上建立索引,它会起作用。但是,您可能会发现自己希望根据日期加上另一个字段进行搜索/汇总。在该数据上创建一个复合索引将使其非常有效。 |
|
|
6
0
还有一件事要补充:当心时区,如果你提供在线服务,它迟早会出现,而且很难追溯。 夏令时特别糟糕。 (达米克) |
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 2 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 2 年前 |
|
Dante · Django::配置不当:池不支持持久连接 2 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 2 年前 |