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

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

2011-12-23 
菜鸟 求救我的数据库删除效率问题我用的是Access数据库,库中有几个表A,B,C3个表都没有主键,但可根据其中的

菜鸟 求救我的数据库删除效率问题
我用的是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

热点排行