首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

DELPHI+ACCESS查询的有关问题

2013-10-23 
DELPHI+ACCESS查询的问题。delphi ado access我有一条很费时的SQL要循环查询,用的是ACCESS数据库。情况1:我

DELPHI+ACCESS查询的问题。
delphi ado access
我有一条很费时的SQL要循环查询,用的是ACCESS数据库。
情况1:我试了用1-20个线程分别创建一个CONNECTION会话去查询同一个ACCESS,发现效率和不使用线程所花费的时间差不多。
网上查了下资料,有人说:
-----------------------------------------------------------------------------------------------
你当然可以设计多个线程,但是记住不是你的线程在替代Access引擎工作,所以是不是多线程完全看Access引擎。但是,Access引擎确实不是多现成的,因此虽然你有多个线程提出访问,但是Access是排队一个一个执行的。
-----------------------------------------------------------------------------------------------
情况2:我复制了20个这样的ACCESS数据库,用1-20个线程去连接这20个不同的数据库,并查询,然后发现查询出来的总时间和不用线程的查询还是差不多。
不知道这是啥情况呀?麻烦帮分析分析。
[解决办法]
你这样多线程根本不能提高效率,除非你的cpu足够多,如果你要读取所有数据,可以考虑分页技术,每次读取一部分,另外ado也支持异步查询,不会卡死在那
[解决办法]
竹筒倒豆子,豆子再多,孔就只有一个豆那么大,你也只能一次倒出一颗
[解决办法]
我有一条很费时的SQL要循环查询,用的是ACCESS数据库。

耗时应该在[多次循环]查询上, 在这里做文章吧
[解决办法]
“SQL要循环查询,用的是ACCESS数据库。”
请在SQL语句及数据索引上多做文章,不要什么都钻到多线程中去。
[解决办法]
楼主的实验结果表明access不支持多线程,再多线程最后也是轮流执行的。
这个 SQL 看着头晕,IIF 函数有几处是一样的写重复了。
[解决办法]
想知道你取得数据后在客户端要做什么?为什么一次只取一条记录,不能取多条记录,而要反复从数据库取记录?
[解决办法]
你这个查询几乎就是全表扫描,效率超低。
[解决办法]
情况1说明Access的引擎确实不支持多线程
情况1说明Access的引擎确实不支持多线程,并且于数据库文件无关,引擎只能同时接受一个Connect

[解决办法]
楼主完全没有必要搞这么一个大查询语句,Access照样可以拆分,你可以把一些局部数据写成查询,就像视图和临时表一样使用,肯定有优化的空间
[解决办法]

引用:
Quote: 引用:

想知道你取得数据后在客户端要做什么?为什么一次只取一条记录,不能取多条记录,而要反复从数据库取记录?
V_Addr,V_City,V_Prov这三个参数是变化的。
类似于输入省,市,区,地址后,自动匹配到数据库中的目的地、
------------------------------------------------------
也知道这个查询效率低。记得ORACLE里有个函数索引,但ACCESS好像没有。
没有找到比较好的方案,所以只能这样了哎。各位有啥好建议?


可以把符合基本条件的数据先取到客户端,再在客户端通过过滤或查找进行,比你每次从数据库取数好。
[解决办法]
我觉得你的内层查询语句可以拆分开来,放到查询里面去
[解决办法]
Access本来就是针对小数据量的,所以没有一系列针对大数据量查询提供优化支持,数据量大了换更适合的数据库。这个语句本身似乎没有优化空间了。
[解决办法]
mssql也不支持函数索引吧。。。。
文件型桌面数据库,也就那样了

热点排行