我有一个带时间戳字段的mysql表
此表中的大多数查询都是where someIntegerIield=? and theTimestampField is null
。
我应该将时间戳字段用作索引的一部分吗? 或者我应该创建并维护另一个字段,当时间戳字段为空时将设置为0,否则为1?
也欢迎其他替代方案。
答案 0 :(得分:0)
是的,您可以使用索引“timestamp1和timestamp2之间的时间”。 MySQL / InnoDB中的默认索引类型是BTREE,它也可以与比较(<,>,之间)以及前缀一起使用。 是的,MySQL确实在索引条件中使用IS NULL / IS NOT NULL。 http://dev.mysql.com/doc/refman/5.5/en//is-null-optimization.html用于某些表类型(包括InnoDB)。
如果您使用的是早期版本的MySQL,您可以随时尝试“EXPLAIN”:它会告诉您它是否使用索引(以及哪个)用于查询