Foxtable(狐表)用户栏目专家坐堂 → 外部数据源SQL查询的速度问题


  共有5845人关注过本帖树形打印复制链接

主题:外部数据源SQL查询的速度问题

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/1 10:39:00 [只看该作者]

强烈建议你在一个表中,然后用查询表处理这种问题。

实际上,就管理而言,性质相同的数据,一个表才好管理。


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/1 10:41:00 [只看该作者]

就算1个表,他还是要循环8500次,一样要耗时很久!  到底是什么需求导致你要这样做呢? 能否把需求和原因说出来呢,也许有更好的方案根本不需要这样做呢.

 回到顶部
帅哥哟,离线,有人找我吗?
sh16
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:83 积分:1494 威望:0 精华:0 注册:2013/5/6 0:54:00
  发帖心情 Post By:2013/11/1 10:41:00 [只看该作者]

就是我上面说的,有很多号码,需要在多张表(多个机房)中查询记录,不知道具体分布在哪张表中,需要在每张表中查询。每张表都不大,顶多几千条记录。分开几张表的目的是为了好管理,好区分。

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/1 10:42:00 [只看该作者]

就算1个表,还是要循环8500次,一样要耗时很久!  到底是什么需求导致你要这样做呢? 能否把需求和原因说出来呢,也许有更好的方案根本不需要这样做呢.

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/1 10:44:00 [只看该作者]

以下是引用sh16在2013-11-1 10:41:00的发言:
就是我上面说的,有很多号码,需要在多张表(多个机房)中查询记录,不知道具体分布在哪张表中,需要在每张表中查询。每张表都不大,顶多几千条记录。分开几张表的目的是为了好管理,好区分。

 

数据不大的话,很好办,设计一个查询表,将这6个表的数据全部查询到一个DataTable中,然后修改你的代码,直接在DataTable中查询数据,而不是用select语句查询,这样一来,只需执行一次select语句,就是生成查询表的时候执行了一次,估计重置8500行,也就是10秒左右的时间而已。

 

就是我4楼回复的第二种方法:

 

2、如果已经是事实,你可以将这个6个表全部载入到一个表中,成为一个DataTable,在这个DataTable检索,合并多个表的select语句参考:

五、UNION 运算符

UNION运算符用于组合两个查询的结果。
例如有一个客户表,一个供应商表,我需要得到所有在中国的客户和供应商的名称和地址。
因为数据位于不同的表中,显然,我们需要用两个查询才能完成任务:

SELECT 公司名称, 地址 FROM {客户} WHERE 国家 = '中国' UNION SELECT 公司名称, 地址 FROM {供应商} WHERE 国家 = '中国'

两个查询的字段名称、个数、类型必须完全一致才行。

默认情况下,UNION会自动排除重复的行,然后你可以用ALL关键词来确保返回所有的行,例如:

SELECT 公司名称, 地址 FROM {客户} WHERE 国家 = '中国' UNION ALL SELECT 公司名称, 地址 FROM {供应商} WHERE 国家 = '中国'

[此贴子已经被作者于2013-11-1 10:45:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6835 积分:43243 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2013/11/1 12:01:00 [只看该作者]

不知楼主是什么需求。


 回到顶部
帅哥哟,离线,有人找我吗?
lyfxybc
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1290 积分:9820 威望:0 精华:0 注册:2012/9/19 21:13:00
  发帖心情 Post By:2013/11/1 12:20:00 [只看该作者]

查询时,尽量少用For Each ... Next,减少循环次数

 

同一个局域网,如果数据库在本机,项目在本机,统计\查询都很快,如果计算机与数据库之间交换机个数有关,数据通过的交换机个数越多,速度越慢。

 

不知是否这样/

[此贴子已经被作者于2013-11-1 12:24:02编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lyfxybc
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1290 积分:9820 威望:0 精华:0 注册:2012/9/19 21:13:00
  发帖心情 Post By:2013/11/1 12:29:00 [只看该作者]

楼主的意思估计是:只知道数据源,不知道数据表,好比数据源是大海,从大海里找到一条小鱼,你要把所有的鱼都找一下,才行。


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/11/1 12:47:00 [只看该作者]

15W行代码查询不到1秒,你这区区1W行?

 

你思路严重问题,不要强调你为什么要分6张表,而是你为什么要执行这种查询。

估计10几行代码就可以解决了


 回到顶部
帅哥哟,离线,有人找我吗?
hiliuyong
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:436 积分:5082 威望:0 精华:0 注册:2012/3/27 15:33:00
  发帖心情 Post By:2013/11/3 18:32:00 [只看该作者]

[PVLAN] 和[CVLAN] 加上索引,会快很多,数据越多,性能优化越明显。

 回到顶部
总数 22 上一页 1 2 3 下一页