Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 或者在WHERE语句中,事情会急剧放缓_Sql Server_Tsql_Stored Procedures - Fatal编程技术网

Sql server 或者在WHERE语句中,事情会急剧放缓

Sql server 或者在WHERE语句中,事情会急剧放缓,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我有以下查询查找与订单相关的客户。我在客户身上有一个遗留ID,因此我必须检查旧ID(遗留)和客户ID,从而检查or语句 SELECT c.Title, c.Name FROM productOrder po INNER JOIN Employee e ON po.BookedBy = e.ID CROSS APPLY ( SELECT TOP 1 * FROM Customer c WHERE(po.

我有以下查询查找与订单相关的客户。我在客户身上有一个遗留ID,因此我必须检查旧ID(遗留)和客户ID,从而检查or语句

SELECT  
   c.Title, 
   c.Name   
  FROM productOrder po   
      INNER JOIN Employee e ON po.BookedBy = e.ID
      CROSS APPLY (
      SELECT TOP 1 *
      FROM Customer c 
      WHERE(po.CustID = c.OldID OR po.CustID = c.CustID)    
      ) c

  GROUP BY     
  c.CustomerId, c.Title, c.FirstName, c.LastName

如果我删除
语句,它在这两种情况下都可以正常运行。有一个关于客户id和旧版的索引。

对于表
customer
,您需要在列
oldid
custid
上创建单独的索引。如果您已经在
custid
上建立了聚集索引,那么也可以在
oldid
上添加索引:

CREATE INDEX customer_oldid_idx ON customer(oldid);
如果没有此索引,请在此子句中搜索
oldid

 WHERE (po.CustID = c.OldID OR po.CustID = c.CustID)

必须使用全表扫描,这将非常慢。

对于表
customer
,您需要在列
oldid
custid
上创建单独的索引。如果您已经在
custid
上建立了聚集索引,那么也可以在
oldid
上添加索引:

CREATE INDEX customer_oldid_idx ON customer(oldid);
如果没有此索引,请在此子句中搜索
oldid

 WHERE (po.CustID = c.OldID OR po.CustID = c.CustID)

将必须使用全表扫描,这将非常慢。

您在
customer.oldid
customer.custid
上有单独的索引吗?没有,我有一个聚集索引为什么不更新
productOrder
并用相应的新id:s替换旧id:s?假设旧id:s在
客户中也是唯一的,这应该很容易。。。我缺少什么?您在
customer.oldid
customer.custid
上有单独的索引吗?没有,我有一个聚集索引为什么不更新
productOrder
并用相应的新id:s替换旧id:s?假设旧id:s在
客户中也是唯一的,这应该很容易。。。我错过了什么?