Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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/2/image-processing/2.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 server 如何优化SQL Server查询?_Sql Server - Fatal编程技术网

Sql server 如何优化SQL Server查询?

Sql server 如何优化SQL Server查询?,sql-server,Sql Server,我有一张桌子,里面有一些会员和他们的名片。有3种独特类型的卡,即ADIB、ADCB和NBAD。一个人可以有多张卡,也可以有多张卡,即2张ADIB卡 下面是我的问题,我如何优化它 create table #cobrand(grp_number nvarchar(12), partner varchar(5)) insert into #cobrand select distinct c_grp_number grp_number, 'NBAD' partner from partnership

我有一张桌子,里面有一些会员和他们的名片。有3种独特类型的卡,即ADIB、ADCB和NBAD。一个人可以有多张卡,也可以有多张卡,即2张ADIB卡

下面是我的问题,我如何优化它

create table #cobrand(grp_number nvarchar(12), partner varchar(5))

insert
into #cobrand
select distinct c_grp_number grp_number, 'NBAD' partner from partnership_cards c where partner_name = 'NBAD'
and not exists (select grp_number from #cobrand t where c.c_grp_number = t.grp_number)

insert into #cobrand
select distinct c_grp_number grp_number, 'ADIB' partner from partnership_cards c where partner_name = 'ADIB'
and not exists (select grp_number from #cobrand t where c.c_grp_number = t.grp_number)

insert into #cobrand
select distinct c_grp_number grp_number, 'ADCB' partner from partnership_cards c where partner_name = 'ADCB'
and not exists (select grp_number from #cobrand t where c.c_grp_number = t.grp_number)
也许

INSERT INTO #cobrand
SELECT DISTINCT
       c_grp_number AS grp_number,
       partner_name AS partner
FROM partnership_cards c
WHERE partner_name IN ('NBAD','ADCB','ADIB')
  AND NOT EXISTS(SELECT 1
                 FROM partnership_cards e
                 WHERE e.c_grp_number = c.c_grp_number
                   AND ((c.partner_name IN ('ADCB','ADIB') AND e.partner_name = 'NBAD')
                    OR  (c.partner_name = 'ADIB' AND e.partner_name IN ('NBAD','ADCB')));

但是,如果没有样本数据,则无法进行测试。

正如@Larnu所说,如果没有测试数据,则无法进行测试

INSERT INTO #cobrand
SELECT DISTINCT
    c_grp_number
    ,c.partner_name
FROM
    partnership_cards c
WHERE
    c.partner_name IN ( 'NBAD', 'ADCB', 'ADIB' )
AND NOT EXISTS (
    SELECT  1
    FROM
        #cobrand t
    WHERE
        c.c_grp_number  = t.grp_number
    AND c.partner_name  = t.[partner]
) ;

我们在这里是为了帮助和回答问题,而不是做你的工作。我们不是一个自由编程的人service@Olearn亲爱的奥莱恩,我们在这里学习新事物、新技术。所以我想要一些新的方法来解决这个问题。这不仅仅是学习,不是我的工作。我们无法访问你的屏幕或数据库。现在的查询有什么问题,为什么你认为它需要优化?@Mazhar它工作得很好,但我需要一种方法,通过这种方法,它只能在一个查询中完成,而不是像我的方式。。这些是多个查询。@NishantKhanna你应该说,在这个问题中,不存在于这个查询中不会实现任何结果;在此插入之前,cobrand表是空的。OP没有提到cobrand表是空的。他们创建表的事实是一个很强的指示。表不包含任何关于创建的数据。我假设这是出于我们的目的,提供部分DDL来帮助OP:-这就是这个问题的问题,不是吗我们做了太多的假设。OP需要更清楚。这个答案包括card_status(卡片状态)列,以及原始文档中未提及的标志question@Larnu你能告诉我你是如何更改我发布的查询格式的吗?我突出显示了代码并按下了{}按钮。
select c_grp_number, partner_name from 
        (select c_grp_number, partner_name, 
            row_number() over (partition by c_grp_number order by partner_name desc)
        as flag
        from sameer_db..etihad_partnership_cards_temp
        where card_status = 'Active' and partner_name in ('NBAD', 'ADIB', 'ADCB'))t
        where flag = 1