通常我的表包含一个日期列,当它永久为空时是0000-00-00。添加一个额外的列TINYINT是否只是为了跟踪该行是否永久活动更好,这样我的搜索性能就会更好?或者我应该只保留日期列?
SELECT columns FROM table_name WHERE date_is != '0000-00-00'
对比
SELECT columns FROM table_name WHERE col_emplty != '1'
TinyInt的搜索速度应该更快,不是吗?
发布于 2015-04-19 09:48:18
如果需要,您可以将日期列的默认值设置为null。因此,您只需检查数据是否为IS NOT NULL
,因为添加额外的列只是为了查看下一列是否具有正确的日期格式,这是没有意义的。
发布于 2015-04-19 10:30:11
向列添加新字段或允许为空将解决您的问题,但这两者都是,这是一种很好的做法。
如果99%的时间你要根据日期(可以是任何日期的默认日期)来选择数据,或者要更新这个日期字段,你可以在这里做的是创建一个int列,而不是日期类型,并将值保持为yyyymmdd(例如:不是保持‘20150419 -04-19’(日期),而是将数据保持为20150419(10000*年+100*月+日期),并比较日期值),因为这是一个整型列,因此搜索和更新表都会很快。
https://stackoverflow.com/questions/29728209
复制相似问题