小编Feb*_*ind的帖子

首先过滤还是先加入?

我最初只是写了一个查询来查找每个客户的年度总订单数大于1.在1.query中,我过滤了结果集并将其与另一个找到客户名称的结果集连接起来.奇怪的是,我认为过滤器首先会产生更好的性能,因为加入需要的结果更少.所以我写了第二个查询,先加入,然后过滤,看起来比第一个查询更整洁.由于结果中的所有时间都较低,因此结果与我预期的相同.但我不确定哪个时间最重要?或者这个案子只是巧合?如何考虑表现?

use [AdventureWorks2012]
set statistics time on;

--1.filter first,join second
select tempC.*,tempP.FirstName,tempP.LastName
from 
(select  Year(OrderDate) As OrderYear,CustomerID,count(CustomerID) As CustomerOrderAmt
from Sales.SalesOrderHeader 
group by Year(OrderDate),CustomerID 
having count(CustomerID) >1
) as tempC
join(
select p.FirstName,p.LastName,c.CustomerID
from Person.Person as p join Sales.Customer as c on c.PersonID=p.BusinessEntityID
) as tempP
on tempC.CustomerID=tempP.CustomerID
order by tempC.OrderYear,tempC.CustomerID
GO

--2.join first,filter second

select Year(so.OrderDate) As Orderdate,so.CustomerID,count(so.CustomerID) As CustomerOrderAmt,p.FirstName,p.LastName
from Sales.SalesOrderHeader as so
join Sales.Customer as C on so.CustomerID=c.CustomerID
join Person.Person as p on c.PersonID=p.BusinessEntityID
group by Year(so.OrderDate),so.CustomerID,p.FirstName,p.LastName …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

7
推荐指数
2
解决办法
2652
查看次数

为什么这个Dynamic Sql语句失败了?

这没有任何问题:

select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE 
from [AdventureWorks2012].INFORMATION_SCHEMA.COLUMNS WHERE table_name='employee';
Run Code Online (Sandbox Code Playgroud)

但是,当它转移到动态语句时,它总是失败:

begin
DECLARE @sqlstatement VARCHAR(MAX);
DECLARE @TableName varchar(max)='employee';

set @sqlstatement='select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE
from [AdventureWorks2012].INFORMATION_SCHEMA.COLUMNS WHERE table_name='+@TableName;
print (@sqlstatement);
EXECUTE(@sqlstatement);

end
Run Code Online (Sandbox Code Playgroud)

错误说:无效的列名称'employee'

sql sql-server

2
推荐指数
1
解决办法
189
查看次数

是xlock,rowlock,holdlock正确吗?

我看到(xlock,rowlock,holdlock)的组合用于表.参考在线书籍,holdlock是保持共享锁(用于读取,例如选择),直到事务完成,xlock是用于数据修改的独占锁(写锁),例如更新,插入或删除.我们怎样才能同时使用读写表?我想知道组合是否生效.混乱...

sql t-sql sql-server

2
推荐指数
1
解决办法
4975
查看次数

标签 统计

sql ×3

sql-server ×3

t-sql ×2