小编RuS*_*SSe的帖子

SQL Server 的慢速排序

在我的应用程序中,我有一个在“文件”表中执行搜索的查询。

表“files”由“f”.“created”分区(参见表定义,客户端19(“f”.“cid = 19)有大约2600万行)。

这里的重点是,如果我执行此查询:

SELECT "f"."id" AS "FileId"  
, "f"."name" AS "FileName"  
, "f"."year" AS "Fileyear"  
, "f"."cid" AS "clientId"
, "f"."created" AS "FileDate"
, CASE WHEN ("vnVE0"."value" is not null AND "vnVE0"."value" != '')                           
                                THEN CAST("vnVE0"."value" AS decimal(28,2))
                                ELSE 0 END AS "keywordValueCol0_numeric"
FROM files "f"  
OUTER APPLY
(
    SELECT DISTINCT
        VT.[value]
    FROM dbo.value_number AS VT
    WHERE
        VT.id_file = F.id
        AND VT.id_field = 260
) AS "vnVE0"
WHERE "grapado" IS NULL AND "masterversion" IS NULL AND ("f"."year" = …
Run Code Online (Sandbox Code Playgroud)

performance azure-sql-database query-performance

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

在具有数百万行的表上进行慢速 JOIN

在我的应用程序中,我必须连接数百万行的表。我有一个这样的查询:

SELECT DISTINCT "f"."id" AS "FileId"  
, "f"."name" AS "FileName"  
, "f"."year" AS "FileYear"  
, "vt"."value" AS "value"  
FROM files "f"  
JOIN "clients" "cl" ON("f"."cid" = "cl"."id" AND "cl"."id" = 10)  
LEFT JOIN "value_text" "vt" ON ("f"."id" = "vt"."id_file" AND "vt"."id_field" = 65739)  
GROUP BY "f"."id", "f"."name", "f"."year", "vt"."value"  
Run Code Online (Sandbox Code Playgroud)

表“files”有1000万行,表“value_text”有4000万行。

这个查询太慢了,执行需要 40 秒(15000 个结果) - 3 分钟(65000 个结果)。

我曾想过将两个查询分开,但我不能,因为有时我需要按连接的列(值)排序...

我能做什么?我将 SQL Server 与 Azure 结合使用。具体而言,具有定价/模型层“PRS1 PremiumRS (125 DTU)”的 Azure SQL 数据库

我收到了大量数据,但我认为互联网连接不是瓶颈,因为在其他查询中,我也收到了大量数据,而且速度更快。

我尝试使用客户端表作为子查询并DISTINCT使用相同的结果进行删除。

我在客户端表中有 1428 行。 …

performance azure-sql-database query-performance

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

使用“NOT IN”时性能不佳

在我的应用程序中,我有一个在“文件”表中执行搜索的查询。

该表filesf.created(参见表定义)进行分区,并为客户端 19 ( f.cid = 19)提供约 1 亿行。

我正在使用我上一个问题的答案中的这个查询, SQL Server 的慢顺序

WITH PartitionNumbers AS
(
    -- Each partition of the table
    SELECT P.partition_number
    FROM sys.partitions AS P
    WHERE P.[object_id] = OBJECT_ID(N'dbo.files', N'U')
    AND P.index_id = 1
)
SELECT
    FF.id,
    FF.[name],
    FF.[year],
    FF.cid,
    FF.created,
    vnVE0.keywordValueCol0_numeric
FROM PartitionNumbers AS PN
CROSS APPLY
(
    SELECT
        F100.*
    FROM 
    (
        -- 50 rows in order for year 2013
        SELECT
            F.id,
            F.[name],
            F.[year],
            F.cid,
            F.created
        FROM dbo.files …
Run Code Online (Sandbox Code Playgroud)

performance sql-server t-sql query-performance

6
推荐指数
2
解决办法
535
查看次数