假设我有一个包含5亿条记录的MySQL表
它有一个列ts,该列被编入索引,并将时间戳作为值。这样做有效率吗?
select * from table where ts>=time()-24hours
以及过去24小时/周/月/年?
或者我应该选择nosql?
发布于 2012-09-19 04:00:51
我发现,在处理大的日期范围时,MySQL通常会丢弃索引。您的">=",从技术上讲是一个范围(以“now”结尾),可能是优化器的一个例外,因为它应该能够跳到起始点...
如果您有足够的时间来构建这个表,那么可以使用EXPLAIN查看它是否使用了索引。
希望你不需要SELECT *。如果在结果中只需要几个较小的列,也可以将它们放入索引中,这将使MySQL不必从磁盘读取底层较宽的行。
https://stackoverflow.com/questions/12484057
复制相似问题