数据库:最佳实践 - 旧数据?

Tim*_*imk 2 database rdbms database-design

我有一个汽车分类列表数据库.

90天后,分类列表不再有效显示(列表过期); 但是,我想保留列表以便存档.

问题:从数据库设计最佳实践角度以及查询性能来看,最好将旧的列表A)与当前列表保持在同一个表中,或者B),将过期的列表移到过期的表中并删除该列表从目前的上市表?

换一种说法,

选项A):

table_classified_listing:
car_id
expired = true | false
...
Run Code Online (Sandbox Code Playgroud)

选项B):

// only current listing in this table (expired = false)
table_classified_listing:
car_id
...

// only expired listing in this table (expired = true)
expired_table_classified_listing:
car_id
...
Run Code Online (Sandbox Code Playgroud)

更新:

我对选项A的关注是,在我的MySQL数据库中 - 当我运行时EXPLAIN,它说它正在使用expired作为索引的主键.但是,对我的查询搜索性能更重要的是它使用该price字段,因为我正在进行基于的搜索price > X.因此我为什么考虑选择选项B.

Mat*_*ock 6

选项A)这样您可以将所有数据放在一个位置,并且可以更轻松地创建报告查询,列出用户历史条目等.任何速度问题都应该通过该列上的数据库索引来缓解.选项B)是过早优化.