Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 选择-性能_Sql_Sql Server_Performance_Select - Fatal编程技术网

Sql 选择-性能

Sql 选择-性能,sql,sql-server,performance,select,Sql,Sql Server,Performance,Select,有人知道另一种更有效地运行下面的查询的方法吗?我正在使用SQL Server 2014 SELECT (SELECT COUNT(1) VolumeTransacaoBoleto FROM TableA WITH (NOLOCK)--orders WITH(NOLOCK) WHERE TIT_DATA_EMISSAO BETWEEN '2017-05-01' AND '2017-05-02' ) A

有人知道另一种更有效地运行下面的查询的方法吗?我正在使用SQL Server 2014

SELECT
    (SELECT 
         COUNT(1) VolumeTransacaoBoleto
     FROM 
         TableA WITH (NOLOCK)--orders WITH(NOLOCK) 
     WHERE 
         TIT_DATA_EMISSAO BETWEEN '2017-05-01' AND '2017-05-02'
    ) Amount1,
    (SELECT COUNT(*) VolumeRegistro     
     FROM TableB WITH (NOLOCK)
     WHERE payment_type IN (300, -1)
       AND data BETWEEN '2017-05-01' AND '2017-05-02') Amount2 
我知道使用子查询并不是最好的方法。我想按列分别显示所有计数

这是执行计划,之后我在
TableB
上创建了一个索引,就像@Ezlo所说的那样


为查询创建两个特定索引,如下所示:

CREATE NONCLUSTERED INDEX TableAIndex ON TableA (TIT_DATA_EMISSAO)

CREATE NONCLUSTERED INDEX TableBIndex ON TableB (payment_type, data)
如果您可以将它们
聚集起来,那么就更好了(您必须先删除已经存在的聚集索引,如果它也是聚集的,则必须删除主键)


还要确保
TIT_DATA_EMISSAO
DATA
DATE
DATETIME
数据类型。

架构/索引信息会很有用,因为您有日期过滤器,所以您可以在两个表的DATE列上定义分区。这将有助于提高性能。好的,我将在这里发布所有证据。关于结构。。可以做子查询吗?@GauravS不可以。分区并不是为了提高查询性能,事实上它们通常会损害查询性能。索引才是最重要的important@Luiz忘了证据吧。发布表模式、索引和执行计划。同时删除
NOLOCK
提示。他们的意思是“在使用大锁时读取脏数据”。如果您觉得需要添加它们,则意味着您试图从其他人使用的表中读取太多数据