Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 如何使用超过1500万行的表聚合优化查询?_Sql_Sql Server_Tsql_Query Optimization - Fatal编程技术网

Sql 如何使用超过1500万行的表聚合优化查询?

Sql 如何使用超过1500万行的表聚合优化查询?,sql,sql-server,tsql,query-optimization,Sql,Sql Server,Tsql,Query Optimization,此查询的执行时间为3:29分钟。如何减少此查询的执行时间 FactLoad表的行总数为-16 769 952 FactLoadFin表的行总数为-12 308 763 SELECT wd.id_CompanyOperator AS IdCompanyOperator , wd.StationFromCode , wd.StationToCode , SUM(wd.TariffInvRFPartialSum)/ MAX(wd.CarsCountByOp) AS TariffInvRFWe

此查询的执行时间为3:29分钟。如何减少此查询的执行时间

FactLoad
表的行总数为-16 769 952

FactLoadFin
表的行总数为-12 308 763

SELECT    
 wd.id_CompanyOperator AS IdCompanyOperator
, wd.StationFromCode
, wd.StationToCode
, SUM(wd.TariffInvRFPartialSum)/ MAX(wd.CarsCountByOp) AS TariffInvRFWeighted
, SUM(wd.TariffOwnRFPartialSum)/ MAX(wd.CarsCountByOp) AS TariffOwnRFWeighted
, SUM(wd.AmountIncVATPartialSum)/ MAX(wd.CarsCountByOp) AS AmountIncVATWeighted
, MAX(wd.AmountIncVAT) AS MaxAmountIncVAT
, MIN(wd.AmountIncVAT) AS MinAmountIncVAT
FROM      
(
    SELECT 
    AVG(fl.TariffInvRF) OVER (PARTITION BY fl.StationFromCode, 
                                        fl.StationToCode,
                                        fl.id_CompanyOperator,
                                        fl.NaklID)
                * COUNT(fl.ID) OVER (PARTITION BY fl.StationFromCode,
                                        fl.StationToCode,
                                        fl.id_CompanyOperator,
                                        fl.NaklID) AS TariffInvRFPartialSum
    , AVG(fl.TariffOwnRF) OVER (PARTITION BY fl.StationFromCode,
                                        fl.StationToCode,
                                        fl.id_CompanyOperator,
                                        fl.NaklID)
                * COUNT(fl.ID) OVER (PARTITION BY fl.StationFromCode,
                                    fl.StationToCode,
                                    fl.id_CompanyOperator,
                                    fl.NaklID) AS TariffOwnRFPartialSum
    , COUNT(fl.ID) OVER (PARTITION BY fl.StationFromCode,
                                fl.StationToCode,
                                fl.id_CompanyOperator) AS CarsCountByOp
    , AVG(flf.AmountIncVAT) OVER (PARTITION BY fl.StationFromCode,
                                        fl.StationToCode,
                                        fl.id_CompanyOperator,
                                        fl.NaklID) AS AmountIncVAT
    , AVG(flf.AmountIncVAT) OVER (PARTITION BY fl.StationFromCode,
                                        fl.StationToCode,
                                        fl.id_CompanyOperator,
                                        fl.NaklID)
                * COUNT(fl.ID) OVER (PARTITION BY fl.StationFromCode,
                                    fl.StationToCode,
                                    fl.id_CompanyOperator,
                                    fl.NaklID) AS AmountIncVATPartialSum
    , fl.StationFromCode
    , fl.StationToCode
    , fl.id_CompanyOperator
    , fl.NaklID
    FROM   dbo.FactLoad fl LEFT JOIN dbo.FactLoadFin flf 
        ON flf.id_FactLoad = fl.ID
           AND flf.id_Assortment IN (
               SELECT
               ID
               FROM  dbo.SP_Assortment WHERE Name IN ('Car Rent'))
    ) wd
 GROUP BY  wd.StationFromCode
    , wd.StationToCode
    , wd.id_CompanyOperator

FactLoad
的DDL为:

CREATE TABLE dbo.FactLoad
(
     ID                     BIGINT IDENTITY(1,1)    NOT NULL      
   , NaklID                 BIGINT                  NOT NULL
   , CarNumber              VARCHAR(10)             NOT NULL
   , OutDate                    DATETIME                NOT NULL
   , ArriveDate             DATETIME                NULL
   , DeliveryDate           DATETIME                NULL
   , RegisterDate           DATETIME                NULL      
   , StationFromCode            VARCHAR(6)              NOT NULL
   , StationToCode          VARCHAR(6)              NOT NULL
   , Distance               INT                     NULL
   , DistanceRF             INT                     NULL
   , ETSNG                  VARCHAR(6)              NOT NULL
   , id_RouteType           INT                     NULL
   , id_RouteView           INT                     NULL
   , CarQnt                 INT                     NOT NULL
   , CarCapacity                NUMERIC(7,3)            NULL
   , CarModel               VARCHAR(50)             NULL
   , CarType                    INT                     NOT NULL
   , CargoWeight                NUMERIC(7,3)            NULL
   , OwnerOKPO              VARCHAR(12)             NULL
   , TenantOKPO                 VARCHAR(12)             NULL
   , SpecialNotes           VARCHAR(25)             NULL
   , TariffInv              NUMERIC(18,3)           NULL
   , TariffInvRF                NUMERIC(18,3)           NULL
   , TariffOwn              NUMERIC(18,3)           NULL
   , TariffOwnRF                NUMERIC(18,3)           NULL
   , Operator1              VARCHAR(255)            NULL
   , Operator2              VARCHAR(255)            NULL
   , isDeleted              TINYINT                 NULL DEFAULT(0)
   , DeleteDate             DATETIME2               NULL
   , NeedUpdate_Data            TINYINT                 NOT NULL DEFAULT(0)
   , NeedUpdate_Tariff      TINYINT                 NOT NULL DEFAULT(1)
   , NeedTransffer          TINYINT                 NOT NULL DEFAULT(1)
   , id_FactLoad                BIGINT                  NULL
   , DepartureDate          DATETIME                NULL
   , DepartureDateSuek      DATETIME                NULL
   , id_CompanyOperator     INT                     NOT NULL DEFAULT(-1)
   , StationBorderInCode        VARCHAR(6)              NULL
   , StationBorderInDate        DATE                    NULL
   , TariffVAT              NUMERIC(21,3)           NULL
   , CarSign                    VARCHAR(50)             NULL
   , CONSTRAINT [PK_FactLoad] PRIMARY KEY CLUSTERED (ID) WITH( 
   STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
   ALLOW_PAGE_LOCKS = ON)
)

CREATE NONCLUSTERED INDEX [IX_FactLoad_NaklIDLast] ON dbo.FactLoad(NaklID_Last)

CREATE NONCLUSTERED INDEX [IX_FactLoad_NaklnumberCarnumberOutdate] ON dbo.FactLoad(NaklNumber, CarNumber, OutDate)

CREATE NONCLUSTERED INDEX [IX_FactLoad_ForTariff] ON dbo.FactLoad(OutDate, ETSNG, NeedUpdate_Tariff, CarType, Distance, DistanceRF, StationToCode, StationFromCode, CargoWeight, id_RouteView, CarQnt, CarCapacity, CarModel)

CREATE NONCLUSTERED INDEX [IX_FactLoad_ForTariff_2] ON dbo.FactLoad (NeedUpdate_Tariff, CarType) INCLUDE (Distance, DistanceRF, ETSNG)

ALTER INDEX [IX_FactLoad_ForTariff_2] ON [dbo].[FactLoad] DISABLE



 IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = 
     object_id('dbo.FactLoad') AND NAME ='IX_FactLoad_ForObjectsID4Transfer')
 DROP INDEX [IX_FactLoad_ForObjectsID4Transfer] ON dbo.FactLoad;

 CREATE NONCLUSTERED INDEX [IX_FactLoad_ForObjectsID4Transfer] ON 
      dbo.FactLoad (NaklID, OutDate, NeedUpdate_Tariff, ModifyDate)


 IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('dbo.FactLoad') AND NAME ='IX_FactLoad_ForObjectsID4Transfer_2')
 DROP INDEX [IX_FactLoad_ForObjectsID4Transfer_2] ON dbo.FactLoad;

 CREATE NONCLUSTERED INDEX [IX_FactLoad_ForObjectsID4Transfer_2] ON 
     dbo.FactLoad (NaklID_Last, OutDate, NeedUpdate_Tariff, ModifyDate)



  CREATE NONCLUSTERED INDEX [IX_FactLoad_ForResetStatus] ON dbo.FactLoad 
      (ModifyDate) INCLUDE (NaklID, NaklID_Last)


  CREATE NONCLUSTERED INDEX [IX_FactLoad_ForIsDeleted] ON dbo.FactLoad 
      (OutDate,isDeleted,SourceFlag) INCLUDE ([ID],[NaklID],[NaklNumber], 
      [CarNumber],[ArriveDate],[DeliveryDate],[StationFromCode], 
      [StationToCode],[DistanceRF],[ETSNG],[id_RouteType],[CarQnt], 
      [CarCapacity],[CarModel],[CargoWeight],[OwnerOKPO],[TenantOKPO], 
      [TariffInvRF],[TariffOwnRF],[SenderOKPO],[RecipOKPO], 
      [PayerOKPO],[StationBorderCode],[DateExpire],[CarWeight],[DueWeight], 
      [Weight1001],[DailyOrderNum],[DailyOrderPos],[DistanceDue], 
      [id_SolidThread],[DepartureDate],[id_CompanySender],[id_CompanyRecip], 
      [id_Incoterms],[isSuek],[id_CompanyPayer],[OwnerID],[TenantID], 
      [id_CompanyOwner],[id_CompanyTenant],[ArriveDateReceiver], 
      [id_CompanyBeneficiary],[id_CompanyOperator],[SAP_CargoCode], 
      [SAP_SenderPE],[id_VAT],[LastNaklNumber],[LastCarNumber],[isDos], 
      [PriorETSNG])


  CREATE NONCLUSTERED INDEX [IX_FactLoad_LastnaklnumberLastcarnumberOutdate] 
  ON dbo.FactLoad (LastNaklNumber, LastCarNumber, OutDate)


  CREATE NONCLUSTERED INDEX [IX_FactLoad_CarnumberNaklnumberOutdate] ON 
     [dbo].[FactLoad] ([CarNumber], [NaklNumber], [OutDate]) ON [PRIMARY]


  CREATE NONCLUSTERED INDEX [IX_FactLoad_StationFromTo] ON [dbo].[FactLoad] 
      ([StationFromCode], [StationToCode])
CREATE TABLE dbo.FactLoadFin
   (
    ID                              BIGINT              NOT NULL IDENTITY(1,1)
  , id_FactLoad                     BIGINT              NOT NULL
  , id_Assortment                   INT                 NOT NULL
  , id_AccrualType                  TINYINT             NOT NULL
  , id_Company                      INT                 NOT NULL
  , SpecItem                        INT                 NULL
  , id_VAT                          INT                 NULL
  , Amount                          NUMERIC(18,2)       NULL
  , AmountVAT                       NUMERIC(18,2)       NULL
  , AmountIncVAT                    NUMERIC(18,2)       NULL
  , ActItem                         BIGINT              NULL
  , Scope                           VARCHAR(5)          NULL    
   ) 

 drop index if exists FactLoadFin.IX_FactLoadFin_ActitemIddocumentheader
 CREATE NONCLUSTERED INDEX IX_FactLoadFin_ActitemIddocumentheader ON 
     dbo.FactLoadFin(ActItem, id_DocumentHeader)

 drop index if exists FactLoadFin.IX_FactLoadFin_Iddocumentheader
 CREATE NONCLUSTERED INDEX IX_FactLoadFin_Iddocumentheader ON 
 dbo.FactLoadFin(id_DocumentHeader)

 drop index if exists FactLoadFin.IX_FactLoadFin_Assortment
 create index IX_FactLoadFin_Assortment on FactLoadFin
    (id_Assortment, id_Contract, id_Company, id_FactLoad);
 update statistics FactLoadFin with fullscan;

 CREATE NONCLUSTERED INDEX [IX_FactLoadFin_idContractDoc_SpecItem] ON 
    dbo.FactLoadFin(id_ContractDoc, SpecItem) INCLUDE (id_DocumentHeader, 
    Amount, AmountVAT, AmountIncVAT)

 DROP INDEX IX_FactLoadFin_ScopeAmount ON dbo.FactLoadFin
 CREATE NONCLUSTERED INDEX [IX_FactLoadFin_ScopeAmount] ON 
     dbo.FactLoadFin(Scope, Amount) INCLUDE(id_FactLoad, id_Contract, 
     id_Company, ActItem, AmountVAT)
FactLoadFin
的DDL为:

CREATE TABLE dbo.FactLoad
(
     ID                     BIGINT IDENTITY(1,1)    NOT NULL      
   , NaklID                 BIGINT                  NOT NULL
   , CarNumber              VARCHAR(10)             NOT NULL
   , OutDate                    DATETIME                NOT NULL
   , ArriveDate             DATETIME                NULL
   , DeliveryDate           DATETIME                NULL
   , RegisterDate           DATETIME                NULL      
   , StationFromCode            VARCHAR(6)              NOT NULL
   , StationToCode          VARCHAR(6)              NOT NULL
   , Distance               INT                     NULL
   , DistanceRF             INT                     NULL
   , ETSNG                  VARCHAR(6)              NOT NULL
   , id_RouteType           INT                     NULL
   , id_RouteView           INT                     NULL
   , CarQnt                 INT                     NOT NULL
   , CarCapacity                NUMERIC(7,3)            NULL
   , CarModel               VARCHAR(50)             NULL
   , CarType                    INT                     NOT NULL
   , CargoWeight                NUMERIC(7,3)            NULL
   , OwnerOKPO              VARCHAR(12)             NULL
   , TenantOKPO                 VARCHAR(12)             NULL
   , SpecialNotes           VARCHAR(25)             NULL
   , TariffInv              NUMERIC(18,3)           NULL
   , TariffInvRF                NUMERIC(18,3)           NULL
   , TariffOwn              NUMERIC(18,3)           NULL
   , TariffOwnRF                NUMERIC(18,3)           NULL
   , Operator1              VARCHAR(255)            NULL
   , Operator2              VARCHAR(255)            NULL
   , isDeleted              TINYINT                 NULL DEFAULT(0)
   , DeleteDate             DATETIME2               NULL
   , NeedUpdate_Data            TINYINT                 NOT NULL DEFAULT(0)
   , NeedUpdate_Tariff      TINYINT                 NOT NULL DEFAULT(1)
   , NeedTransffer          TINYINT                 NOT NULL DEFAULT(1)
   , id_FactLoad                BIGINT                  NULL
   , DepartureDate          DATETIME                NULL
   , DepartureDateSuek      DATETIME                NULL
   , id_CompanyOperator     INT                     NOT NULL DEFAULT(-1)
   , StationBorderInCode        VARCHAR(6)              NULL
   , StationBorderInDate        DATE                    NULL
   , TariffVAT              NUMERIC(21,3)           NULL
   , CarSign                    VARCHAR(50)             NULL
   , CONSTRAINT [PK_FactLoad] PRIMARY KEY CLUSTERED (ID) WITH( 
   STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
   ALLOW_PAGE_LOCKS = ON)
)

CREATE NONCLUSTERED INDEX [IX_FactLoad_NaklIDLast] ON dbo.FactLoad(NaklID_Last)

CREATE NONCLUSTERED INDEX [IX_FactLoad_NaklnumberCarnumberOutdate] ON dbo.FactLoad(NaklNumber, CarNumber, OutDate)

CREATE NONCLUSTERED INDEX [IX_FactLoad_ForTariff] ON dbo.FactLoad(OutDate, ETSNG, NeedUpdate_Tariff, CarType, Distance, DistanceRF, StationToCode, StationFromCode, CargoWeight, id_RouteView, CarQnt, CarCapacity, CarModel)

CREATE NONCLUSTERED INDEX [IX_FactLoad_ForTariff_2] ON dbo.FactLoad (NeedUpdate_Tariff, CarType) INCLUDE (Distance, DistanceRF, ETSNG)

ALTER INDEX [IX_FactLoad_ForTariff_2] ON [dbo].[FactLoad] DISABLE



 IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = 
     object_id('dbo.FactLoad') AND NAME ='IX_FactLoad_ForObjectsID4Transfer')
 DROP INDEX [IX_FactLoad_ForObjectsID4Transfer] ON dbo.FactLoad;

 CREATE NONCLUSTERED INDEX [IX_FactLoad_ForObjectsID4Transfer] ON 
      dbo.FactLoad (NaklID, OutDate, NeedUpdate_Tariff, ModifyDate)


 IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('dbo.FactLoad') AND NAME ='IX_FactLoad_ForObjectsID4Transfer_2')
 DROP INDEX [IX_FactLoad_ForObjectsID4Transfer_2] ON dbo.FactLoad;

 CREATE NONCLUSTERED INDEX [IX_FactLoad_ForObjectsID4Transfer_2] ON 
     dbo.FactLoad (NaklID_Last, OutDate, NeedUpdate_Tariff, ModifyDate)



  CREATE NONCLUSTERED INDEX [IX_FactLoad_ForResetStatus] ON dbo.FactLoad 
      (ModifyDate) INCLUDE (NaklID, NaklID_Last)


  CREATE NONCLUSTERED INDEX [IX_FactLoad_ForIsDeleted] ON dbo.FactLoad 
      (OutDate,isDeleted,SourceFlag) INCLUDE ([ID],[NaklID],[NaklNumber], 
      [CarNumber],[ArriveDate],[DeliveryDate],[StationFromCode], 
      [StationToCode],[DistanceRF],[ETSNG],[id_RouteType],[CarQnt], 
      [CarCapacity],[CarModel],[CargoWeight],[OwnerOKPO],[TenantOKPO], 
      [TariffInvRF],[TariffOwnRF],[SenderOKPO],[RecipOKPO], 
      [PayerOKPO],[StationBorderCode],[DateExpire],[CarWeight],[DueWeight], 
      [Weight1001],[DailyOrderNum],[DailyOrderPos],[DistanceDue], 
      [id_SolidThread],[DepartureDate],[id_CompanySender],[id_CompanyRecip], 
      [id_Incoterms],[isSuek],[id_CompanyPayer],[OwnerID],[TenantID], 
      [id_CompanyOwner],[id_CompanyTenant],[ArriveDateReceiver], 
      [id_CompanyBeneficiary],[id_CompanyOperator],[SAP_CargoCode], 
      [SAP_SenderPE],[id_VAT],[LastNaklNumber],[LastCarNumber],[isDos], 
      [PriorETSNG])


  CREATE NONCLUSTERED INDEX [IX_FactLoad_LastnaklnumberLastcarnumberOutdate] 
  ON dbo.FactLoad (LastNaklNumber, LastCarNumber, OutDate)


  CREATE NONCLUSTERED INDEX [IX_FactLoad_CarnumberNaklnumberOutdate] ON 
     [dbo].[FactLoad] ([CarNumber], [NaklNumber], [OutDate]) ON [PRIMARY]


  CREATE NONCLUSTERED INDEX [IX_FactLoad_StationFromTo] ON [dbo].[FactLoad] 
      ([StationFromCode], [StationToCode])
CREATE TABLE dbo.FactLoadFin
   (
    ID                              BIGINT              NOT NULL IDENTITY(1,1)
  , id_FactLoad                     BIGINT              NOT NULL
  , id_Assortment                   INT                 NOT NULL
  , id_AccrualType                  TINYINT             NOT NULL
  , id_Company                      INT                 NOT NULL
  , SpecItem                        INT                 NULL
  , id_VAT                          INT                 NULL
  , Amount                          NUMERIC(18,2)       NULL
  , AmountVAT                       NUMERIC(18,2)       NULL
  , AmountIncVAT                    NUMERIC(18,2)       NULL
  , ActItem                         BIGINT              NULL
  , Scope                           VARCHAR(5)          NULL    
   ) 

 drop index if exists FactLoadFin.IX_FactLoadFin_ActitemIddocumentheader
 CREATE NONCLUSTERED INDEX IX_FactLoadFin_ActitemIddocumentheader ON 
     dbo.FactLoadFin(ActItem, id_DocumentHeader)

 drop index if exists FactLoadFin.IX_FactLoadFin_Iddocumentheader
 CREATE NONCLUSTERED INDEX IX_FactLoadFin_Iddocumentheader ON 
 dbo.FactLoadFin(id_DocumentHeader)

 drop index if exists FactLoadFin.IX_FactLoadFin_Assortment
 create index IX_FactLoadFin_Assortment on FactLoadFin
    (id_Assortment, id_Contract, id_Company, id_FactLoad);
 update statistics FactLoadFin with fullscan;

 CREATE NONCLUSTERED INDEX [IX_FactLoadFin_idContractDoc_SpecItem] ON 
    dbo.FactLoadFin(id_ContractDoc, SpecItem) INCLUDE (id_DocumentHeader, 
    Amount, AmountVAT, AmountIncVAT)

 DROP INDEX IX_FactLoadFin_ScopeAmount ON dbo.FactLoadFin
 CREATE NONCLUSTERED INDEX [IX_FactLoadFin_ScopeAmount] ON 
     dbo.FactLoadFin(Scope, Amount) INCLUDE(id_FactLoad, id_Contract, 
     id_Company, ActItem, AmountVAT)
我在
CREATE TABLE
中减少了列,使其更短,因为减少的列不参与要优化的查询


任何帮助都将不胜感激。我认为,提出问题并听取社区的建议,比一直不知情要好。提前感谢。

看看您的计划,大多数资源似乎都被排序操作消耗掉了:

为了对这些数据进行预排序,我可能会创建以下索引:

CREATE NONCLUSTERED INDEX IX_FactLoad_StationFromCode_StationToCode_idCompanyOperator_NaklID
ON dbo.FactLoad (StationFromCode, StationToCode, id_CompanyOperator, NaklID)
INCLUDE (TariffInvRF, TariffOwnRF, ID);
这应该会改善它,但可能不会创造奇迹。如果确实如此,可以进一步研究和调查

更新:


尝试使用
ColumnStore
索引


使用
列存储
索引进行测量


ColumnStore
索引,包括实际执行计划:01:02 分钟,不包括实际执行计划为:01:01分钟


ColumnStore
索引的代码为

CREATE NONCLUSTERED COLUMNSTORE INDEX 
   [csi_FactLoad_StationFromCode_StationToCode_idCompanyOperator_NaklID] ON 
   [dbo].[FactLoad] ( [NaklID], [StationFromCode], [StationToCode], 
   [id_CompanyOperator], [ID], [TariffInvRF], [TariffOwnRF] )WITH 
   (DROP_EXISTING = OFF, COMPRESSION_DELAY = 0) ON [PRIMARY]

我们需要查询计划()和表的DDL来帮助您。@MJH OP已编辑。上面写的是几秒钟前。:)有相当大的3.5分3.3秒:)我看不到任何东西会特别使查询不可搜索。但是,我建议将{SubQuery}中的
cf.id_schodmen更改为
EXISTS
@step。此链接应该可以帮助您:谢谢,我们也确实需要索引的定义。请。:)谢谢你的回复!我在[dbo].[FactLoad]([NaklID]ASC、[StationFromCode]ASC、[StationFromCode]ASC、[id\U CompanyOperator]ASC)的[id]、[TariffInvRF]、[TariffOwnRF])上添加了一个索引
创建非聚集索引[IX\FactLoad\U StationFromCode]ASC、[id\U CompanyOperator]ASC)(PAD_INDEX=OFF,STATISTICS_norecocomputer=OFF,SORT_IN_TEMPDB=OFF,DROP_EXISTING=OFF,ONLINE=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[主]上GO
。执行时间为3:39分钟。查询计划为Heya,索引列的顺序不正确-
NaklID
被移到了开头而不是结尾。因此排序操作仍然存在,并且没有性能改进。
ColumnStore
索引包含
实际执行计划
01:02分钟
,但不包括实际执行计划
是:
01:01
分钟。代码是
在[dbo].[FactLoad]([NaklID],[StationFromCode],[StationFromCode],[StationFromCode],[stationcode],[id公司运营商],[id],[tariffinrf],[tarifownrf]上创建非聚集列存储索引[PRIMARY]上的(DROP\u EXISTING=OFF,COMPRESSION\u DELAY=0)已经足够好了,所以columnstore索引似乎工作得最好。:)好的,您应该看看执行计划。可能还需要进行分拣操作。