首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么MySQL数据连接器花费的时间比MySQL查询浏览器长得多?

为什么MySQL数据连接器花费的时间比MySQL查询浏览器长得多?
EN

Stack Overflow用户
提问于 2009-05-08 18:26:41
回答 2查看 256关注 0票数 2

我有一个来自单个表的非常简单的查询(三个where条件;两个等于,一个在之间),在MySQL查询浏览器中,查询只用了不到半秒的时间就可以运行,返回了8300条记录。如果我使用OLEDB (实际上只是一个MySQL包装器)运行完全相同的查询,则需要大约35秒。

使用的引擎是MyISAM (如果这很重要的话)。我使用的是Visual Studio2008(如果这很重要的话)。编辑:使用MySQL数据连接器5.2.5。编辑,编辑:切换到MySQL数据连接器6.0.3 (最新版本)将时间缩短到29秒。

查询为:

代码语言:javascript
运行
复制
select drh_data.reading_time, drh_data.raw_value, drh_data.float_value, drh_data.data_quality
from drh_data
where drh_data.site_id=202
and drh_data.device_id=7
and reading_time between '2009-04-08 11:15:01' and '2009-05-08 11:15:02'
order by drh_data.reading_time desc;

有什么想法吗?

更新:我终于抽出时间来检查CPU使用情况(根据一位回答者的建议),发现我的应用程序使用了50%的CPU时间。运行MySQL (在CentOS中)的VirtualPC机器在这20 (大约)秒内没有任何变化,所以问题完全出在客户端。我还对查询运行了Explain,结果如下:

代码语言:javascript
运行
复制
id  select_type table   type    possible_keys                               key                             key_len     ref     rows    Extra
1   SIMPLE  drh_data    range   PRIMARY,idx_site_device_reading_receive     idx_site_device_reading_receive 11                  7674    Using where

我在这里很忙。有没有人有办法解决这个问题?我打算打破selects via限制,但我认为我不应该这么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-11 23:29:54

我建议检查一下这几秒钟的工作是什么(CPU使用率),是mysql还是你的代码或其他什么。您还可以考虑使用EXPLAIN来查看在其中一种情况下发生了什么,并对它们进行比较。

票数 1
EN

Stack Overflow用户

发布于 2009-05-08 18:56:51

在使用ADO.NET和SQL Server查询分析器之前,我就遇到过这个问题。当我们从query Analyzer运行一个查询时,查询执行了亚秒级,当我们从我们的web应用程序运行它时,它花费了2分钟以上。无论出于什么原因,对表应用索引似乎加快了应用程序和数据库之间的数据连接速度。

我不知道MySQl和SQL Server之间的操作差异,但在我们的例子中似乎发生了另一件事,那就是执行缓存被填满了,这减慢了所有未缓存的执行计划的执行速度。我们实现了一个清除该缓存的每周作业。

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

https://stackoverflow.com/questions/841169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档