首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >传感器时间戳数据表中的MySQL查询时间太长

传感器时间戳数据表中的MySQL查询时间太长
EN

Stack Overflow用户
提问于 2018-04-24 20:22:05
回答 1查看 77关注 0票数 0

我有一个非常简单的表来记录来自传感器的读数。有一列表示传感器id号,一列表示传感器读数,另一列表示时间戳。此列的SQL类型为Timestamp。表中有大量数据,有几百万行。

当我使用某个传感器id号查询某个时间戳之前的所有行时,有时会花费很长时间。如果时间戳是很久以前的时间戳,则查询速度相当快,但如果是最近的时间戳,则可能需要2到3秒。

看起来好像SQL引擎正在对表进行迭代,直到它找到第一个大于查询时间戳的时间戳。或者可能更多的查询数据减慢了它的速度,我不知道。

无论如何,我在这里寻找设计建议,特别是针对以下几点:为什么它这么慢?我怎么才能让它更快呢?

有没有什么设计技巧可以应用在这里?我对SQL了解不多,也许有一种方法可以让SQL引擎知道数据是有序的(目前还没有,但我想我可以在插入时对其进行排序),并加快查询速度。也许我应该改变查询的方式,或者改变时间戳列的数据类型。

EN

回答 1

Stack Overflow用户

发布于 2018-04-24 20:32:37

使用EXPLAIN查看执行计划,并验证查询是否使用了合适的索引。如果没有,请验证是否有适当的索引可用。

INDEX是“按顺序”存储的,MySQL可以有效地使用某些查询模式。( InnoDB表也按集群键顺序存储,这是表的主键(如果存在)或非空列上的第一个唯一键。)

对于某些查询模式,通过使用索引,MySQL可以消除对大量行的检查。当MySQL不能使用索引时(因为合适的索引不存在,或者因为查询具有阻止它的构造),执行计划将执行完全扫描,即检查表中的每一行。当这种情况发生在非常大的表上时,有一种变慢的趋势。

编辑

问:为什么它这么慢?

答:影响运行时间的因素有几个。它可能是争用,例如,由另一个会话占用的排他表锁,或者可能是I/O (磁盘读取)的时间,或者是一个大型的“使用文件排序”操作。通过慢速网络连接返回结果集的时间。

由于所提供的信息有限,无法诊断问题。我们只能就一些常见的问题提供一些建议。

问:我如何才能让它更快?

答:不可能提出具体的建议。我们需要找出瓶颈在哪里,瓶颈是什么,以及瓶颈所在的地址。

查看EXPLAIN的输出以检查执行计划。是否使用了适当的索引,或者是否正在执行完全扫描?检查了多少行?是否有“使用文件排序”操作?等人提出的。

问:有没有可以在这里应用的设计技术?

答:通常情况下,拥有适当的索引,并仔细设计SQL语句,以便启用最有效的访问计划。

问:也许我应该改变查询的方式

答:更改SQL语句可能会提高性能,在查看了执行计划之后,这是一个很好的起点……是否可以修改查询以获得更有效的计划?

问:或者更改时间戳列的数据类型。

答:我认为更改TIMESTAMP列的数据类型不太可能提高性能。这只有4个字节。您会将其更改为什么?使用DATETIME将占用7个字节。

通常,我们希望行尽可能短,并将尽可能多的行打包到一个块中。它还希望以一种物理方式组织表,以便可以从较少的块满足查询……查询所需的行是在较少的页面中找到的,而不是分散在大量页面上的行。

对于InnoDB,增加缓冲池的大小可能会减少I/O。

来自固态硬盘(SSD)的I/O将比来自旋转硬盘( HDD )的I/O更快,如果HDD上存在来自其他进程的I/O争用,这一点尤其正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50010194

复制
相关文章
Tcp连接建立与连接释放
1)客户端给服务器发送了一条将其SYN标志位置1的请求连接建立报文,然后其状态由closed转变为SYN-SENT(同步已发送)。
你的益达
2020/08/25
3.8K0
Tcp连接建立与连接释放
建立JDBC数据库连接实例解析
  连接(Connection)是一个代表与数据库进行的程序连接的对象。通过连接,可以执行SQL语句、返回数据库操作结果等。 创建指定数据库的URL     要建立与数据库的连接,首先要创建指定数据库的URL。连接通常是通过数据库的URL对象,利用DriverManager的getConnection方法建立的。数据库URL对象与网络资源的统一资源定位类似,其构成格式如下:    jdbc:subProtocol:subName://hostname:port; DatabaseName=XXX  
阿新
2018/04/11
2.2K0
如何与 Zappos 建立 EDI 连接?
Zappos 是一家享誉全球的知名在线鞋类和服饰零售商,经营范围涵盖各类时尚品牌的鞋类、服饰及配饰等,使命是为广大消费者提供方便、愉悦、优质的购物体验,让每一位顾客都能找到心仪的产品。多年来,Zappos 卖场凭借卓越的服务与产品质量,积累了众多荣誉和成就。
知行软件EDI
2023/07/28
2520
如何与 Zappos 建立 EDI 连接?
如何与 MACOM 建立 EDI 连接?
MACOM提供高性能射频,微波和毫米波器件,其产品广泛应用于通信,航空航天,国防和工业市场。近年来MACOM在中国地区的业务一直高速增长。
知行软件EDI
2023/04/17
1.3K0
如何与 MACOM 建立 EDI 连接?
如何与GHSP 建立 EDI 连接?
GHSP是全球领先的汽车、运输和电器行业机械和机电系统供应商。最初成立于1924年,此后已扩展到世界各地。如果GHSP向我们发来EDI连接邀请,我们应该如何应对呢?
知行软件EDI
2022/10/31
1.3K0
如何与GHSP 建立 EDI 连接?
如何与Kostal 建立EDI连接?
Kostal是一家德国公司,主要从事汽车电子和工业电子产品的研发、生产和销售,是全球领先的电子元器件和系统供应商之一。其产品包括电气系统、传感器、电动驱动系统、电池管理系统等方面,被广泛应用于汽车、工业、家用电器等领域。
知行软件EDI
2023/05/09
6220
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
星哥玩云
2022/08/16
5.7K0
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
速读原著-TCP/IP(连接的建立与终止)
T C P是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本章将详细讨论一个 T C P连接是如何建立的以及通信结束后是如何终止的。这种两端间连接的建立与无连接协议如 U D P不同。我们在第 11章看到一端使用 U D P向另一端发送数据报时,无需任何预先的握手。
cwl_java
2020/03/11
5480
如何与宜家IKEA建立EDI连接?
宜家IKEA是来自瑞典的全球知名家具和家居零售商,在全球拥有223个商场,其中有36家商场位于中国大陆。如今宜家在全球53个国家有大约1300个供应商,在16个国家的28个分销中心负责为宜家商场供货。如此庞大的供应链体系和业务数据量使得宜家的业务数据处理流程面临巨大挑战。究竟如何处理大批量的业务数据呢?答案是:使用EDI(电子数据交换)技术。EDI专攻于大批量的业务数据处理,助力宜家提升其自动化水平。
知行软件EDI
2021/05/24
9630
如何与宜家IKEA建立EDI连接?
Linux下与github建立ssh连接
3.当你看到 “Enter a file in which to save the key,” 的提示后,按Enter键.意思就是使用默认路径.
LogicPanda
2018/08/30
6.8K0
Linux下与github建立ssh连接
Linux下与github建立ssh连接
前期准备 设置用户: git config --global user.name "your name" git config --globa user.email "your email.com" 全局使用该用户名及用户邮箱 创建目录: mkdir new_folder_name 创建一个用于跟踪的新文件夹或者使用系统自带的文件管理系统创建一个新的文件夹 可以参看 git常用命令及含义[http://blog.csdn.net/autuan_liu/article/details/5
zenRRan
2018/04/10
6.5K0
Linux下与github建立ssh连接
浅谈TCP协议(建立与断开连接)
TCP是面向连接的,可靠的进程到进程通信的协议。 TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时存储数据。 TCP将若干个字节构成一个分组,成为报文段(segment) TCP报文段封装在IP数据报中:
小手冰凉
2019/09/10
2.7K0
浅谈TCP协议(建立与断开连接)
如何与 Boot Barn 建立 EDI 连接?
Boot Barn 大力鼓励其供应商使用 EDI,计划与其供应商一起使用 EDI 技术,从而转换采购订单、发票和提前发货通知 (ASN) 的人工处理方式。
知行软件EDI
2023/08/04
2550
如何与 Boot Barn 建立 EDI 连接?
MariaDB 建立连接
上面给出的代码连接到MariaDB并提供一个命令提示符来执行SQL命令。 输入代码后,将显示一条欢迎消息,指示连接成功,并显示版本号。
用户9042463
2021/09/29
1.7K0
建立技术连接的思维
从工作计划的角度来说,我们是罗列出一些工作的清单,标明任务权重,当然从我们的角度来说,我们更多会从系统,技术的角度来进行描述和权衡。
jeanron100
2019/05/13
7650
Mysql连接建立与thread cache唤醒原理
Thread 1 监听socket,协议栈的连接上来后,使用现有的或新建线程处理连接。
mingjie
2022/05/12
1.1K0
一、Django连接与建立数据库
如果没有修改django默认数据库连接,那么会自动生产一个sqlite3的数据库。
Dreamy.TZK
2020/04/09
2.8K0
如何与劳氏 Lowe's 建立EDI连接?
劳氏Lowe's(以下简称:Lowe's)是专门从事家庭装修的美国零售公司,而 EDI 则是电子数据交换的缩写,是指通过计算机网络进行企业间电子数据交换的一种标准化方式。
知行软件EDI
2023/05/10
3690
如何与劳氏 Lowe's 建立EDI连接?
【说站】python中socket建立客户连接
以上就是python中socket建立客户连接的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
5380
【说站】python中socket建立客户连接
如何与安森美Onsemi建立EDI连接?
安森美半导体(ON Semiconductor)是应用于高能效电子产品的首要高性能硅方案供应商。其产品包括电源和信号管理、逻辑、分立及定制器件,帮助客户解决他们在汽车、通信、计算机、消费电子等领域的独特设计挑战。近期我们帮助客户成功与安森美Onsemi建立EDI连接,实现自动化地业务数据传输。
知行软件EDI
2022/10/25
5050
如何与安森美Onsemi建立EDI连接?

相似问题

当大小文件较大时,$_FILE为空,代码点火器

12

当字段为空时,验证无效

10

当字段为空时删除行

15

当字段为空时获取"null“

15

当字段为空时触发变更

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档