有两个表 tabA, tabB,A为主表,B为从表tabA与tabB各有180万数据.现在 inner join ,大家看看有什么建议.谢谢!

解决方案 »

  1.   


    我现在在连接的字段上做了聚集索引如(fID),另外在日期字段上加了非聚集索引,环境为sql server 2005
      

  2.   

    Create Table TabA(
    fID Int,
    fDate DateTime,
    fBillNo Varchar(50) --.......
    )Create Table TabB(
    fID int,
    fAmount Decimal(18,2) --.......
    )1\在 fID上已做非聚集索引
    2\fDate 上做了聚集索引Inner join 查一万多记录需要四十秒
      

  3.   

    用left join 
    查询计划拿出来看看
      

  4.   

    主表建一个聚集索引,最好就是自增ID,然后从表用主表的自增ID做为关联,这样,通过自增ID   Inner join 效率最高
      

  5.   

    将每次查出来的结果,再inner join,而不是inner join以后再查结果
      

  6.   

    数据性能优化是一个很复杂、多方面的问题,其中数据库结构设置和部署非常重要,是前提。想必你已经处理了,在此就不多说了。
    仅有如下问题需要注意:
    1、表字段的索引首先要建得充分和合理。
       对于那些最常作为表间关系的、查询条件的、排序的字段原则上都应建立索引的。按默认类型字段就行了。2、SQL查询时,不要使用select * 这样的初级水平,明确所要使用的字段;
    3、SQL查询时, join是微软的一个重要处理,也许是个人习惯和爱好,我个人总是觉得直接使用where中的条件=更好些。其一是比较通行,走到哪儿都能适用;其二是个人觉得这样的性能更好些(不过没有实际测试过~~~)4、如果你使用数据结果集是要显示等的,那么最好是分批处理,每次处理几十、几百或者几千行数据。一下子拉过来,对网络、服务器都有很大损伤的。
    具体写法就不教你了吧?网上资料比较多的。
    此致。