1

我有一个带有时间戳字段的 mysql 表。
此表上的大多数查询将是where someIntegerIield=? and theTimestampField is null.

我应该使用时间戳字段作为索引的一部分吗?
或者我应该创建并维护另一个在时间戳字段为空时设置为 0 否则设置为 1 的文件?

也欢迎其他替代方案。

4

1 回答 1

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”:它会告诉您它是否使用索引(以及哪个)用于您的查询

于 2013-01-14T15:13:23.313 回答