CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  InterBase

为什么interbase的View在使用了left outer join后,就变得非常慢了。

楼主powerpeople(小鬼)2003-11-03 16:39:05 在 其他数据库开发 / InterBase 提问

我数据库中的记录也才1000来条,但查询时却花了大概30秒时间,太慢了!  
  如果去掉left   outer   join后,只用两三秒就出来了。  
  大家有没有办法解决啊,谢谢! 问题点数:80、回复次数:4Top

1 楼CuteBit(康)回复于 2003-11-04 18:42:55 得分 0

你用的是   ib/fb?   版本?连接的两个表中的数据量?索引情况?最好把你全部   DDL   语句粘贴出来让我们分析.Top

2 楼powerpeople(小鬼)回复于 2003-11-08 09:02:14 得分 0

我用的是ib7.1,DLL如下:  
  CREATE   VIEW   "V_MONTHLYSUPPLIERSTOCKSH"   (  
      "F_ID",    
      "F_NAME",    
      "F_MONTH",    
      "F_LASTMONTHSUM",    
      "F_STOCKSSUM",    
      "F_SALESUM",    
      "F_GROSSPROFITSUM",    
      "F_COSTSUM",    
      "F_BALANCESUM",    
      "F_PREPAYSUM",    
      "F_PAYABLE",    
      "F_PAYABLESUM"  
  )   AS  
   
   
  SELECT   T_SUPPLIER.F_ID,   T_SUPPLIER.F_NAME,  
  V_SUPPLIERBALANCE.F_MONTH,  
  (   V_SUPPLIERBALANCE.F_BALANCE   +   V_SUPPLIERSALE.F_COST   -   V_SUPPLIERSTOCKS.F_STOCKSSUM   )   F_LASTMONTHSUM,  
  V_SUPPLIERSTOCKS.F_STOCKSSUM,  
  V_SUPPLIERSALE.F_SALESUM,  
  V_SUPPLIERSALE.F_GROSSPROFIT   F_GROSSPROFITSUM,  
  V_SUPPLIERSALE.F_COST   F_COSTSUM,  
  V_SUPPLIERBALANCE.F_BALANCE   F_BALANCESUM,  
  V_SUPPLIERPREPAY.F_PREPAYSUM,  
  V_SUPPLIERSTOCKS.F_STOCKSSUM   -   V_SUPPLIERPREPAY.F_PREPAYSUM   F_Payable,  
  T_SUPPLIER.F_Payable   F_PayableSum  
  FROM   V_SUPPLIERPREPAY  
        RIGHT   OUTER   JOIN   T_SUPPLIER   ON   (V_SUPPLIERPREPAY.F_SUPPLIERID   =   T_SUPPLIER.F_ID)  
        LEFT   OUTER   JOIN   V_SUPPLIERSALE   ON   (T_SUPPLIER.F_ID   =   V_SUPPLIERSALE.F_SUPPLIERID)  
        LEFT   OUTER   JOIN   V_SUPPLIERBALANCE   ON   (T_SUPPLIER.F_ID   =   V_SUPPLIERBALANCE.F_SUPPLIERID)  
        LEFT   OUTER   JOIN   V_SUPPLIERSTOCKS   ON   (T_SUPPLIER.F_ID   =   V_SUPPLIERSTOCKS.F_SUPPLIERID)  
  ;Top

3 楼CuteBit(康)回复于 2003-11-10 23:34:00 得分 40

hi,powerpeople(小鬼)    
  你提供的资料漏了各个表中的数据量了.我猜你的     LEFT   OUTER   JOIN   的那些表的数据量应该不小,好像是业务数据表   :)  
   
  外连接本来就是很耗性能的一种查询,是性能的一个杀手.  
  建议你使用分析一下你的查询索引使用情况,以及索引状态,如果这些都不奏效,要提高性能就只能重新设计这部分了.Top

4 楼erickleung()回复于 2003-11-11 13:17:21 得分 40

To:   powerpeople(小鬼)  
   
  用两个只10条纪录的表,   以一个   outer   join   连的数据集是多少呢?  
  做四次外连接会是多少?  
   
  你可以考虑用   union   把两或几个sql   select   组成你所需的数据集,   但省却不少资源.Top

相关问题

  • RIGHT OUTER JOIN与LEFT OUTER JOIN的关系?
  • LEFT OUTER JOIN 问题
  • full outer join 问题
  • InterBase!!
  • InterBase
  • InterBase
  • inner join 和 outer join有什么分别?
  • 关于full outer join的问题
  • 多表full outer join 如何关联?
  • inner join 与 outer join 的区别在哪里?

关键词

  • stockssum
  • suppliersale
  • supplierprepay
  • prepaysum
  • supplierbalance
  • supplierstocks
  • supplier
  • outer join
  • payable

得分解答快速导航

  • 帖主:powerpeople
  • CuteBit
  • erickleung

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo