设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1684|回复: 5
打印 上一主题 下一主题

[查询] 如何能让INSERT的速度快起来

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-24 09:43:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位老大:
   
     我每天会受到一个EXCEL表,里面有些信息是前一天已经发过的,我想查询出那些新增加的放进ACCESS数据库的TEMP1表里,
一共20多个字段,数据量也就是2-3万条,但是用INSERT INTO速度简直慢得不能忍受。请各位老大给指条明路吧,这么点数据肯定是我的SQL语句有问题。
千恩万谢啊!
代码如下:
        Sql = "(select ORDER_NUM from TEMP1)"
        Sql = "INSERT INTO [TEMP1] SELECT * From [Excel 8.0;DATABASE=" & excelfilename & ";].[SHEET1$a:az] WHERE ORDER_NUM not in " & Sql
        CNN.Execute (Sql)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-4-24 14:02:03 | 只看该作者
用not in这玩意肯定慢,每条记录都要在temp1中找一遍,不慢才不对。
应该用 ID>值,或者日期=date()这样一类准则,这样会快很多。
3#
发表于 2009-4-24 14:14:07 | 只看该作者
导进到ACCESS再INSERT会比现在要快
用LEFT JOIN 会比 NOT IN 要快
4#
 楼主| 发表于 2009-4-24 14:16:51 | 只看该作者
谢谢回复!因为经常是当天遗漏的ORDER后面才补齐,所以只能用ORDER_num是否包含在TEMP1中来判断是不是要把该条记录INSERT到表里。用时间或ID值都不行...就没有别的好办法吗?用记录去循环判断会更慢吧?
5#
发表于 2009-4-24 14:49:40 | 只看该作者
导进到ACCESS再INSERT会比现在要快
用LEFT JOIN 会比 NOT IN 要快
andymark 发表于 2009-4-24 14:14

谢谢!我试下....
6#
发表于 2009-4-24 16:33:41 | 只看该作者
呵呵,还用马夹
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-6 13:43 , Processed in 0.080250 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表