减少加入时冗余数据的策略

时间:2017-05-21 20:57:35

标签: sql sql-server

我的生产查询与一个具有大文本列的选择有10个连接。 问题是,由于连接,一些搜索从重复数据返回的数据超过8mb ... 7mb。像上面的图像,但更大。

enter image description here

我的表结构示例:

create table A (
    Id int primary key identity(1,1),
    Value varchar(100)
)

create table B(
    Id int primary key identity(1,1),
    AId int,
    Value varchar(100)
)

create table C(
    Id int primary key identity(1,1),
    BId int,
    Value varchar(100)
)

插入内容:

insert into A values ('value A1')
insert into A values ('value A2')
insert into A values ('value A3')

insert into B values(1, 'value B1')
insert into B values(1, 'value B2')
insert into B values(1, 'value B3')

insert into C values(1, 'value C1')
insert into C values(1, 'value C2')
insert into C values(1, 'value C3')

如何以相同的加入效果或更好的方式以智能方式返回必要的数据?

用于执行查询的命令是:

select * from A 
left join B on A.Id = B.AId
left join C on C.BId = B.Id
where A.Id = 1

1 个答案:

答案 0 :(得分:2)

您可以使用err!?仅返回值的第一个外观:

row_number()