Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 IN子句导致查询运行缓慢_Sql_Oracle - Fatal编程技术网

Sql IN子句导致查询运行缓慢

Sql IN子句导致查询运行缓慢,sql,oracle,Sql,Oracle,为了获得更好的性能,我将变量存储在全局表中,然后在子查询中使用它,但事实恰恰相反——性能非常慢。如果删除in子句,查询性能会更快。在下面的第条中,我是否可以使用其他不同的方法来优化性能,或者为提高性能提供建议。谢谢你的帮助 插入到GlobalTempTable中( BranchID;//在gtt中插入BranchID,这不是必需的,可以为null ); 选择Orders.OrderID、Customers.CustomerName、Orders.OrderDate、Employee.EmpNa

为了获得更好的性能,我将变量存储在全局表中,然后在子查询中使用它,但事实恰恰相反——性能非常慢。如果删除in子句,查询性能会更快。在下面的第条中,我是否可以使用其他不同的方法来优化性能,或者为提高性能提供建议。谢谢你的帮助

插入到GlobalTempTable中(
BranchID;//在gtt中插入BranchID,这不是必需的,可以为null
); 
选择Orders.OrderID、Customers.CustomerName、Orders.OrderDate、Employee.EmpName
从命令
根据订单加入客户。CustomerID=Customers.CustomerID;
在Customers.SalesID=Employee.EmpID上加入Employee;

如果Orders.OrDate存在,请尝试替换为

EXISTS ( SELECT 1 FROM GlobalTempTable gtt Employee.BranchID = gtt.BranchID )

请确保您在
GlobalTempTable(BranchID)

上有索引。请运行解释计划并发布结果。我们对这些表、行、索引等一无所知。GTT表中没有索引,它只包含一列。我也在做你暗示的事,但它一直在说,错过了正确的偏执,但在我看来一切都很好。您建议的子查询中是否缺少Where子句我认为应该是
存在(选择…
@Gordon LInoff谢谢您的帮助,现在性能很快。