在timeStamp上选择对象时对性能的影响

时间:2015-03-21 13:42:21

标签: mongodb database

我正在处理聊天应用程序,目前正致力于设计数据库(mongoDB)。我有一个message架构,其结构如下:

{
  from : id,
  to : id,
  content : String,
  createdAt : timeStamp
}

虽然上面的架构相当简单,但我想知道我是否可以将createdAt更新为以下内容:

createdAt : {
    year : YYYY, 
    month : MM,
    date : DD,
    hour : HH,
    minute : MM,
    seconds : SS
}

虽然上面的声音太多,但这可以帮助我避免在向最终用户展示时将timeStamp转换回用户友好日期的麻烦。我可以显示时间createdAt.hour + ' ' + createdAt.minute,而不是一直new Date(timeStamp)

我有以下疑问:

  1. 存储对象VS timeStamp在进行数据库查询时会对性能产生任何影响。 (考虑到它们都被编入索引)

  2. 如果不是timeStamp,最适合存储实体时间的方法是什么。 (因为我已经在一些存储Date对象的博客上阅读了太多的查询速度)

  3. PS。这是我第一次独自设计整个系统。

    感谢。

1 个答案:

答案 0 :(得分:1)

是的,它可能会导致性能影响,因为您将使用复合索引,以便您的查询使用索引扫描而不是记录扫描,并且当您在时间戳上创建单个索引时,查询变得简单并将使用索引。