我正在阅读有关数据关系的信息。 (https://msdn.microsoft.com/en-us/library/ms810294.aspx)我对它的运作方式感到困惑。例如,sql server在返回上面的结果时是否重复数据,或者以任何智能方式返回以避免冗余?
create table #category(Id int, Name varchar(100))
create table #product(Id int, Name varchar(100), CategoryId int)
insert into #category values (1, 'category 1')
insert into #product values (1, 'Product 1', 1)
insert into #product values (2, 'Product 2', 1)
insert into #product values (3, 'Product 3', 1)
insert into #product values (4, 'Product 4', 1)
insert into #product values (5, 'Product 5', 1)
select * from #product left join #category on #product.categoryid = #category.id
答案 0 :(得分:1)
它将复制数据。
在执行此类性能分析时,您可以使用线上工具查看服务器和客户端之间正在传输的内容。
答案 1 :(得分:0)
所有结果都以行/列格式从服务器发送到客户端。它已在SQL Server API中以标准方式标准化多年,并且无法更改。它被设计为允许在客户端遍历结果集,一次一行,而服务器不必一次将所有数据发送到客户端。
关于修改SQL Server内部工作方式的担忧可能会浪费你的时间。如果您提到的“重复”存在真正的问题(用词不当),可能会在网络层面解决。