查询包括20张表,使用了16个连接
每张表数据暂时不是很多,但是查询时间已经快一分钟了

解决方案 »

  1.   

    分析下SQL语句有没有问题,存不存在笛卡尔积的情况,当然结果不希望是笛卡尔积的时候。索引什么的楼主都懂是吧!
      

  2.   

    ---索引视图索引视图是具体化的视图--创建索引视图
    create view 视图名 with schemabinding 
    as
    select 语句
    go---创建索引视图需要注意的几点
    1. 创建索引视图的时候需要指定表所属的架构
    --错误写法
    create view v_f with schemabinding 
    as
    select
       a.a,a.b,b.a,b.b
    from
       a join b 
    on
       a.id=b.id
    go---正确写法:
    create view v_f with schemabinding 
    as
    select
       a.a,a.b,b.a,b.b
    from
       dbo.a join dbo.b 
    on
       a.id=b.id
    go
    2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
    --错误写法
    create view v_f with schemabinding 
    as
    select
       *
    from
       dbo.a join dbo.b 
    on
       a.id=b.id
    go---正确写法
    create view v_f with schemabinding 
    as
    select
       a.a,a.b,b.a,b.b
    from
       dbo.a join dbo.b 
    on
       a.id=b.id
    go3.在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了4. 只能为索引视图创建唯一聚集索引
    --正确的写法
    create unique clustered index ix_uniquetb on v_tb
    go--错误的写法 
    create clustered index ix_uniquetb on v_tb
    go
      

  3.   

    恩,视图或者临时表的方法应该可以解决,我建议楼主采用fredrickhu的方式。