小编Gee*_*zer的帖子

当我有索引时为什么要进行排序?

Azure SQL 数据库。

我有一个表,我需要从中获取Col1Col2基于 的第一行和最新行CreateDate

CREATE TABLE dbo.table1 (
    Id            INT    IDENTITY(1,1) PRIMARY KEY ,
    Col1        VARCHAR(255) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL ,
    Col2        VARCHAR(255) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL ,
    CreateDate    DATETIME NOT NULL
) ;
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的索引:

CREATE INDEX IX__table1_ASC
ON dbo.table1 (Col1, Col2, CreateDate );
Run Code Online (Sandbox Code Playgroud)

我获取第一行的查询是(计划在这里):

--Get the first row
SELECT    TOP (1) WITH TIES
        *
FROM    table1
ORDER BY ROW_NUMBER()
        OVER (PARTITION BY Col1, Col2
              ORDER BY CreateDate );
Run Code Online (Sandbox Code Playgroud)

索引扫描使用我创建的索引 ( …

sql-server optimization execution-plan azure-sql-database query-performance

8
推荐指数
1
解决办法
2110
查看次数

使用 SQL Server 身份验证连接到 Azure SQL 数据库的速度缓慢

在 SSMS 中,当使用服务帐户和 SQL Server 身份验证连接到任何 Azure SQL 数据库时,连接本身可能需要 10 到 15 秒才能建立。

连接后,右键单击任何表,然后单击“选择前 1000 行”,这也需要 10 到 15 秒的时间来响应并在 SSMS 中显示行。

使用“Active Directory - Universal with MFA Supprt”身份验证时,不会发生任何延迟/滞后 - 但是,这不使用相同的服务帐户。

如何解决/调查 SQL Server 身份验证延迟?

authentication sql-server ssms azure-sql-database

5
推荐指数
1
解决办法
5012
查看次数

TSQL 查询以匹配不同长度的字符串

我正在编写一个 TVF 来查询一个大表(数千万行),其中该表中的字符串(邮政编码)与另一个表中的字符串(部分邮政编码(输出代码/扇区部分))匹配。

我遇到了无法解决的边缘情况。

对于那些不熟悉英国邮政编码的人 在此输入图像描述

这是一些示例数据。

DECLARE @tab1 TABLE (Sk INT, Postcode VARCHAR(8))
DECLARE @tab2 TABLE (Sk INT, Coverage VARCHAR(8)) 

INSERT INTO @tab1 (Sk, Postcode) VALUES (1, 'E12 5HH'), (6, 'SW1X 6AA')
INSERT INTO @tab2 (Sk, Coverage) VALUES (1, 'E12'), (1, 'E12 5'), 
                                        (2, 'E1'), (2, 'E11'), (2, 'E13'), 
                                        (3, 'E12 6'),
                                        (4, 'E12 5') ,
                                        (5, 'E12') ,
                                        (7, 'SW1') ,
                                        (8, 'SW1X') 
Run Code Online (Sandbox Code Playgroud)

和我当前的查询

SELECT  S.Sk, 
        S.Postcode, 
        CoverageSk = X.Sk, 
        X.Coverage 
FROM        @tab1   S 
OUTER APPLY (
    SELECT  Sk …
Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database query-performance

4
推荐指数
1
解决办法
398
查看次数

当我有索引时获取 SORT 运算符

在 Azure SQL 数据库(SQL2019 兼容)上,我有一个 ETL 进程,它以 DeltaTrack 模式填充 HISTORY 表。

在 Proc 中,有一个对 HISTORY 表的更新,查询引擎正在使用 SORT,但我有一个应该覆盖它的索引。

此 UPDATE 的用例是针对现有行,自从该行首次添加到 HISTORY 表中以来,我们已向摄取添加了额外的列。

这种排序会导致我们更大/更宽的表上的更新速度极其缓慢。

如何调整索引或查询以删除查询 3中的排序

这是根据京东要求更新的 执行计划

这是 DDL。

DROP TABLE IF EXISTS dbo.STAGE;
GO
CREATE TABLE dbo.STAGE
(
    Id varchar(18) NULL,
    CreatedDate varchar(4000) NULL,
    LastModifiedDate varchar(4000) NULL,
    LastReferencedDate varchar(4000) NULL,
    [Name] varchar(4000) NULL,
    OwnerId varchar(4000) NULL,
    SystemTimestamp datetime2(7) NULL
)
GO

DROP TABLE IF EXISTS dbo.HISTORY;
GO
CREATE TABLE dbo.HISTORY
(
    HistoryRecordId int IDENTITY(1,1) …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan azure-sql-database sort-operator query-performance

3
推荐指数
2
解决办法
389
查看次数

Azure SQL 数据库和数据库维护

例如,如果 SQL 代理不适用于 Azure SQL 数据库,那么是否可以使用 Ola Hallengren 的维护脚本来维护(索引、统计等)数据库?

sql-server maintenance statistics azure-sql-database index-maintenance

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

TSQL 慢查询,未按预期使用索引

我有一个宽表,相对较大,有 14,264,775 行,在 Azure SQL 数据库上运行。

以下查询需要一些 TLC。

IF EXISTS (
    SELECT  1/0 
    FROM dbo.table1 src
      INNER JOIN dbo.table1 tgt 
        ON tgt.Col1 = src.Col1
    WHERE tgt.ValidFrom <= src.ValidTo
    AND tgt.ValidTo >= src.ValidFrom
    AND tgt.RecordId <> src.RecordId  
)
 BEGIN
    RAISERROR('Overlap detected in dbo.table1', 11, 1); 
 END ;
Run Code Online (Sandbox Code Playgroud)

我有这个索引。

CREATE NONCLUSTERED INDEX [IX__table1] ON dbo.table1
        ( Col1 ) 
INCLUDE (ValidFrom, ValidTo, RecordId)
GO
Run Code Online (Sandbox Code Playgroud)

这是查询的 io 统计信息。逻辑阅读能力非常出色。

在此输入图像描述

这是计划 XML。我尝试了 PasteThePlan,但它无法解析计划 XML。(也许它不喜欢Axure sql数据库计划xml)。

如您所见,[src] 上有一个索引扫描;读取 14,264,775 行(与表中的所有行数相同)。并在 [tgt] 上进行索引查找;读取 194,405,307 行。

我需要改变什么来提高查询的性能? …

sql-server index-tuning azure-sql-database query-performance

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