我有一个带有时间戳字段的 mysql 表。
此表上的大多数查询将是where someIntegerIield=? and theTimestampField is null
.
我应该使用时间戳字段作为索引的一部分吗?
或者我应该创建并维护另一个在时间戳字段为空时设置为 0 否则设置为 1 的文件?
也欢迎其他替代方案。
是的,您可以为“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”:它会告诉您它是否使用索引(以及哪个)用于您的查询