我有一个带有时间戳字段的 mysql 表。
此表上的大部分查询都是 where someIntegerIield=?并且时间戳字段为空
。
我应该使用时间戳字段作为索引的一部分吗?
或者我应该创建和维护另一个文件,当时间戳字段为 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”:它会告诉您它是否为您的查询使用索引(以及使用哪个索引)
关于空时间戳上的mysql表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13928589/