有谁知道更有效地运行以下查询的另一种方法?我正在使用 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所说的那样创建了一个索引
为您的查询创建 2 个特定索引,如下所示:
CREATE NONCLUSTERED INDEX TableAIndex ON TableA (TIT_DATA_EMISSAO)
CREATE NONCLUSTERED INDEX TableBIndex ON TableB (payment_type, data)
如果您可以使它们CLUSTERED
变得更好(您必须先删除已经存在的聚集索引,或者如果它也是聚集的,则必须删除主键)。
还要确保TIT_DATA_EMISSAO
和data
是DATE
或DATETIME
数据类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句