一个查询速度的问题

fellow99 2004-10-24 12:18:56
这样的一个查询:
select * from tblEvent where
moduleName='xxxx' and
eventID in (select eventID from tblField where
fieldName='aaa' and fieldValue like '%bbb%')
数据量tblEvent有900条,tblField有19000

用查询分析器出来的速度非常快,一下子就出来了
但是我用delphi编的程序执行到查询的时候就慢得要命,好机子都要等10秒钟以上。
前提:数据库用的是MSDE,都是本机调试。
为什么,这是为什么呢?

是不是连接方式的问题呢?
delphi程序用ODBC来连接的
...全文
217 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fellow99 2004-10-25
  • 打赏
  • 举报
回复
问题已经搞定了~~哈哈
lshuy2001 2004-10-25
  • 打赏
  • 举报
回复
建议使用关联查询吧!在管理里加入查询的条件
heibai520 2004-10-25
  • 打赏
  • 举报
回复
是的!
EXISTS 比 IN 的 性能要好很多!
因为 IN运算它要一个个的作比较!
chn217 2004-10-25
  • 打赏
  • 举报
回复
将eventId设为非聚集索引。语句是没有问题的,换种连接方式试一下
ldljlq 2004-10-25
  • 打赏
  • 举报
回复
用.net吧,包你哪种连接方式都没问题。
fellow99 2004-10-24
  • 打赏
  • 举报
回复
well~~~速度刚刚搞定了,就是ODBC的问题
换了
Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名
这个以后速度就超快了~~一个字:爽!

但是爽完以后问题马上就出来了。。。。
储存过程变得不正常了,执行不会报错,但是返回数据集总是空的~~
如果储存过程换成一般的sql语句是没问题的,说明对储存过程的处理有问题

不知道是什么问题呢?
怎么各个驱动之间相差那么大呢?

ps:谢谢机器猫指点~~~~
solidpanther 2004-10-24
  • 打赏
  • 举报
回复
企业管理器里是把前几条放到界面而不是全部记录,建议用exists语句
select * from tblEvent t where
t.moduleName='xxxx' and
exists (select 1 from tblField where
fieldName='aaa' and fieldValue like '%bbb%' and eventID =t.eventID )
比in要快,
注意需要建立索引,会快的,fieldValue like '%bbb%'如果允许的话,不要加左边的%
fellow99 2004-10-24
  • 打赏
  • 举报
回复
up~~~up~~~up~~~

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧