带有时间戳的mysql数据库中时间序列的最佳索引策略

迪特尔

我有一个数据库,负责处理脉冲测量。
模式如下所示:

id - monitorid - starttime - stoptime - pulses

每台监视器每10分钟提供一次信息。
目前,总计约有13000000行。

开始时间和停止时间是varchar(10),包含unix时间戳。对于我的情况,可能不是最有效的。

对该表的几乎所有查询都是“ WHERE starttime> $ certaintime AND monitorid = $ monid”。所有这些查询当前都非常缓慢。

我在monitorid上有一个索引。我还没有设置启动时间和停止时间,因为我发现这几乎不会给我带来更好的基数,因为每个10分钟的时段都是一个新值。我不确定这个理由。

因此,我的问题是:如何针对最常遇到的范围式查询优化此方法。索引开始时间?用日期而不是时间戳重建表?

任何建议都是最欢迎的!

干杯,

迪特尔

鳄鱼

monitorid + starttime上创建复合btree索引
该索引可以为使用WHERE starttime > X AND monitorid = Y子句的查询提供最佳结果

CREATE INDEX name ON tablename( monitorid + starttime )

monitorid必须是该索引中的前导列,否则该索引将不可用。
在此处阅读“ 8.2.1.3.2多部分索引的范围访问方法”一章以获取详细信息:https ://dev.mysql.com/doc/refman/5.7/en/range-optimization.html

他们写道:

对于BTREE索引,间隔可能适用于与AND组合的条件,其中每个条件使用=,<=>,IS NULL,>,<,> =,<=,!=, <>,BETWEEN或类似“模式”(其中“模式”不以通配符开头)。只要可以确定包含所有与条件匹配的行的单个键元组,就可以使用一个间隔(如果使用<>或!=,则可以使用两个间隔)。

只要比较运算符为=,<=>或IS NULL,优化器就会尝试使用其他关键部分来确定间隔如果运算符是>,<,> =,<=,!=,<>,BETWEEN或LIKE,则优化器将使用它,但不再考虑其他关键部分。对于以下表达式,优化器使用第一个比较中的=。它还从第二个比较中使用> =,但不考虑其他关键部分,并且不将第三个比较用于间隔构造:

key_part1 =' foo'AND key_part2 > = 10 AND key_part3 > 10

(强调我

的意思上面的意思是,在您的特定情况下,如果monitorid + starttime将创建索引on ,则opimizec可以使用索引的两个部分,因为monitorid = $monid在where子句中使用了该索引,但是在反向索引order的情况下starttime + monitorid,第二个索引索引的一部分不可用,因为starttime > $certaintime在where子句中使用了该索引

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从具有时间戳列的数据库表中检索

来自分类Dev

在带有时间戳索引的数据框中创建一个12小时的循环

来自分类Dev

带有时间戳的MySQL转储

来自分类Dev

具有时间加权平均聚合功能的时间序列数据库可用于不规则时间序列?

来自分类Dev

带有时间序列数据的 Amchart 散点图

来自分类Dev

带有时间戳的更高时间戳精度

来自分类Dev

带有时间戳的pandas数据帧插入mysql的问题

来自分类Dev

在带有ef的数据库中使用日期而没有时间

来自分类Dev

如何从数据库中获取与发布时间匹配的所有时间?

来自分类Dev

如何从数据库中获取与发布时间匹配的所有时间?

来自分类Dev

如何从带有时间戳的熊猫数据框中删除未更改的值?

来自分类Dev

将带有时间戳的数据分离到bin中

来自分类Dev

带有时间戳的子集数据,与R中的日期无关

来自分类Dev

在数据库中仅存储没有时间的日期

来自分类Dev

如何从数据库中以 HTML 格式显示没有时间的日期格式?

来自分类Dev

在带有时间戳的Play框架中将Case类序列化为Json

来自分类Dev

C ++带有时间戳的断言

来自分类Dev

如何读取带有时间戳字段的csv?

来自分类Dev

带有时间戳的Cassandra COPY TO

来自分类Dev

带有时间戳的Gradle distZip存档

来自分类Dev

批量脚本移动带有时间戳的文件

来自分类Dev

在Cassandra中使用带有时间戳的插入

来自分类Dev

带有时间戳的postgreSQL排序

来自分类Dev

C ++带有时间戳的断言

来自分类Dev

带有时间戳的Cassandra COPY TO

来自分类Dev

带有时间戳的逻辑删除

来自分类Dev

查找并打印带有时间戳的文件

来自分类Dev

带有时间戳的MomentJS返回日期

来自分类Dev

保存带有时间戳的实时视频帧

Related 相关文章

热门标签

归档