当前位置:编程学习 > C#/ASP.NET >>

Access数据添加越来越慢

--------------------编程问答-------------------- 有高手指点迷津吗?我实在想不出来问题在哪里。
不知道是不是Access数据库本身承受不了十几万数据的问题。 --------------------编程问答--------------------
引用 1 楼 u011497010 的回复:
有高手指点迷津吗?我实在想不出来问题在哪里。
不知道是不是Access数据库本身承受不了十几万数据的问题。

是的,要么分表,要么换数据库。 --------------------编程问答-------------------- access的数据不光和数据表记录行数有关,和表的字段数量也有关。你把表的字段数减少,十几万应该可以的。不要用太多字段索引。 --------------------编程问答-------------------- 另外,自己做一个定时清理备份,access数据库里面只保留部分实时需要的数据,过期的数据即使转为json或xml备份后删除,access一样能用得很好。

其实access的致命问题是不支持并发。 --------------------编程问答-------------------- Access数据库是小型的企业管理吧 比如有100个员工 弄个Access 
曾经看过Access企业级的操作教程 感觉糟透了。。。。。。。。。
弄个SqlServer吧  超猛 --------------------编程问答-------------------- 对于几十万条记录而言,Jet(Access)数据引擎的速度不会比SQL Server慢。

当然其可靠性很差、多用户操作时容易损坏.mdb文件,修复后则会丢失一堆记录。不过这都不影响单机处理效率问题。

你遇到了“很慢”的情况,应该从设计上找原因。至少有两条:1,你的查询字段是否设计了可用到的索引?2,是否可以想办法调整业务流程,避免判断重复? --------------------编程问答--------------------
引用 楼主 u011497010 的回复:


其实你可以换一下思路——3000条数据, 每个都要逐条与数据库里的比较一次, 机器累不累?

可以一次性地把3000条数据的email地址与数据库中的记录对比, 返回已存在的email地址列表。
然后把其它没有的数据一次性插入到数据库, 
已存在的则给个提示就可以了 --------------------编程问答--------------------
引用 7 楼 yenange 的回复:
Quote: 引用 楼主 u011497010 的回复:


其实你可以换一下思路——3000条数据, 每个都要逐条与数据库里的比较一次, 机器累不累?

可以一次性地把3000条数据的email地址与数据库中的记录对比, 返回已存在的email地址列表。
然后把其它没有的数据一次性插入到数据库, 
已存在的则给个提示就可以了
我想知道怎么样一次性地把3000条数据的email地址与数据库中的记录对比 --------------------编程问答--------------------
引用 8 楼 mpy2003 的回复:
Quote: 引用 7 楼 yenange 的回复:

Quote: 引用 楼主 u011497010 的回复:


其实你可以换一下思路——3000条数据, 每个都要逐条与数据库里的比较一次, 机器累不累?

可以一次性地把3000条数据的email地址与数据库中的记录对比, 返回已存在的email地址列表。
然后把其它没有的数据一次性插入到数据库, 
已存在的则给个提示就可以了
我想知道怎么样一次性地把3000条数据的email地址与数据库中的记录对比


呵呵 你好象不是楼主吧?

1. 将email聚合成类似 "a@163.com,b@sohu.com" 的形式作为参数;
2. 将email聚合字符串用类似 http://blog.csdn.net/yenange/article/details/7175078
的方式转换成表变量;
3. 将已有表与表变量联合查询就可以了。
SQL Server: 
select email from emailTable where email not in (
    select id from [dbo].[fn_Split]('a@163.com,b@sohu.com',',')
)

Access自己按这个思路来吧。

其实这个问题不应该放在C#论坛, 数据库论坛更合适!
--------------------编程问答-------------------- 上面的是没有重复的, 重复的改成 in 就可以了 --------------------编程问答--------------------
引用 10 楼 yenange 的回复:
上面的是没有重复的, 重复的改成 in 就可以了
我不是楼主,不过只是觉得可能会碰到这样的问题,不过你举的那个外连接我没有看懂。没有系统地学过差距巨大 --------------------编程问答--------------------
引用 11 楼 mpy2003 的回复:
Quote: 引用 10 楼 yenange 的回复:

上面的是没有重复的, 重复的改成 in 就可以了
我不是楼主,不过只是觉得可能会碰到这样的问题,不过你举的那个外连接我没有看懂。没有系统地学过差距巨大


其实很简单, 只是用了 SQL Server 里的xml的处理方式。 
不用XML, 也可以做到, 只是麻烦一点。

只要有思路, 用什么方式都可以, 关键的是——目的是什么。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,