小编Lui*_*rao的帖子

如何优化在嵌套循环(内部联接)上运行缓慢的查询

TL; 博士

由于这个问题一直有意见,我在这里总结一下,这样新人就不必忍受历史:

JOIN table t ON t.member = @value1 OR t.member = @value2 -- this is slow as hell
JOIN table t ON t.member = COALESCE(@value1, @value2)    -- this is blazing fast
-- Note that here if @value1 has a value, @value2 is NULL, and vice versa
Run Code Online (Sandbox Code Playgroud)

我意识到这可能不是每个人的问题,但通过突出 ON 子句的敏感性,它可能会帮助您寻找正确的方向。无论如何,原文是为未来的人类学家准备的:

原文

考虑以下简单查询(仅涉及 3 个表)

    SELECT

        l.sku_id AS ProductId,
        l.is_primary AS IsPrimary,
        v1.category_name AS Category1,
        v2.category_name AS Category2,
        v3.category_name AS Category3,
        v4.category_name AS Category4,
        v5.category_name AS Category5

    FROM category c4 …
Run Code Online (Sandbox Code Playgroud)

performance sql-server

43
推荐指数
2
解决办法
10万
查看次数

查询未按原始顺序返回项目

考虑以下集合,它是刚刚为针对它运行的查询创建的表变量 @ProductContent 的内容:

@产品内容

请注意项目是如何按 media_type_id、image_weight、image_id 和最后的 image_width DESC 排序的。如果我运行以下查询:

SELECT -- <images>
         pcs.image_type AS [@Type]
        ,pcs.image_type_id AS [@ImageTypeId]
        ,(
            SELECT -- <imageCollection>
                 pcc.image_id AS [@Guid]
                ,pcc.image_angle AS [@Angle]
                ,pcc.image_weight AS [@Weight]
                ,(
                    SELECT -- <image>
                         pci.mime_type AS [@MimeType]
                        ,pci.content_guid AS [@Guid]
                        ,pci.url AS [@Url]
                        ,pci.media_type_id AS '@MediaTypeId'
                        ,t.media_type_description '@Description'
                        ,(
                            SELECT DISTINCT -- <attribute>
                                a.meta_attribute_id '@Id'
                                ,a.meta_attribute_name  '@Name'
                                ,v.meta_value_name AS '@Value'
                            FROM [ADS2].dbo.ads_digital_content_meta m
                            JOIN [ADS2].dbo.ads_digital_content_meta_atr_voc a ON a.meta_attribute_id = m.meta_attribute_id
                            JOIN [ADS2].dbo.ads_digital_content_meta_value_voc v ON v.meta_value_id = m.meta_value_id
                            WHERE m.content_guid …
Run Code Online (Sandbox Code Playgroud)

xml sql-server

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

标签 统计

sql-server ×2

performance ×1

xml ×1