读书人

菜鸟 求救我的数据库删除效率有关问题

发布时间: 2011-12-23 23:32:01 作者: rapoo

菜鸟 求救我的数据库删除效率问题
我用的是Access数据库,库中有几个表 A,B,C
3个表都没有主键,但可根据其中的3个字段可确定一条记录
A,B,C 表中都有 年度,编号,修改时间 ,这3个字段可以唯一确定一条记录。
A表为主表 我想删除B,C表中的记录,必须根据表A的条件
我的AQL如下
delete from b where 年度 in (select 年度 from a where +条件)and
编号 in (select 编号 from a where +条件)and
修改时间 in (select 修改时间 from a where +条件)
效率很慢
求救高手解决!!!!!!!!

[解决办法]
尽量别用in操作,in的效率N慢。
[解决办法]
建索引,不要用in,
[解决办法]
应该改成

delete from b where (年度,编号,修改时间) in (select 年度,编号,修改时间 from a where +条件)

怎样写可以吗

[解决办法]
没有主键, 还用多个使用 IN 的子查询,效率慢, 是正常的
[解决办法]
以下语句通过:
delete b from a where 年度 = a.年度 and 编号 = a.编号 and 修改时间 = a.修改时间 + 其他条件

注意后面关联的表条件中,涉及到表b的字段前面不能加“表名. ",而涉及到a的则要加。

[解决办法]
设主键和索引可以更快。如果应用中必须使用子查询,用in应该没有问题。
[解决办法]
不要使用 in 改为效率高的 exists
[解决办法]
up
[解决办法]
exists的用法请参照下面的地址。
http://technet.microsoft.com/ZH-cn/library/ms188336.aspx
[解决办法]
up

读书人网 >C#

热点推荐