mysql - 500,000,000 条记录,int 字段时间戳索引,mysql 会通过这个查询处理搜索吗?

标签 mysql

假设我有一个 MySQL 表,其中包含 5 亿条记录

它有一个列 ts ,该列已索引并具有时间戳作为值。 这样做效率高吗

从表中选择 *,其中 ts>=time()-24hours

以及过去 24 小时/周/月/年?

或者我应该选择 nosql 吗?

最佳答案

我发现 MySQL 在处理大日期范围时经常会丢弃索引。您的“">=”从技术上讲是一个范围(以“now”结尾),对于优化器来说可能是一个异常(exception),因为它应该能够跳转到起点...

如果您能忍受构建表的时间,请使用EXPLAIN 来查看它是否正在使用索引。

希望您不需要SELECT *。如果您的结果中只需要几个较小的列,请将它们也放入索引中,这将使 MySQL 不必从磁盘读取底层较宽的行。

关于mysql - 500,000,000 条记录,int 字段时间戳索引,mysql 会通过这个查询处理搜索吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12484057/

相关文章:

php - MYSQL 更新单个记录一个表,其中包含第二个表 MYSQL 中多个记录的 MIN 和 MAX 值

php - 为什么悬停时显示的元素没有显示在嵌套的 CSS 下拉列表中?

mysql - 使用 mysql 数据库上的访问信息连接到 MySQL 数据库

php - 带有条件的mysql查询计数,结果为数字

mysql - 统计用户 session 数

php - 获取 TYPO3 Extbase mm 关系计数

mysql - vb6连接到mysql :[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

php - 从 MySQL 结果和 PHP 为 D3.js 树创建分层 JSON?

python - 插入时转换数据有问题吗?

MySQL 无法在 FROM 子句中指定目标表 'meterValue' 进行更新