Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Index de serveur SQL approprié pour le schéma d'insertion uniquement

Insérer uniquement l'index :S Il est préférable de laisser les schémas à insertion fine uniquement sans index, mais le fait d'avoir un index sur une table nuira aux performances de vos opérations d'insertion.

Qu'en est-il de la création d'un index sur feeditem_id et effectiveDateUTC champs quelque chose comme

CREATE NONCLUSTERED INDEX NIX_feeditem_id_effectiveDateUTC
ON dbo.spotquotes(feeditem_id ASC, effectiveDateUTC DESC)
GO

et maintenant écrivez votre requête quelque chose comme .....

;WITH LastestRecords
 AS(
   SELECT Id 
        ,feeditem_id 
        ,value_ask
        ,value_bid
        ,effectiveDateUTC
        ,ROW_NUMBER() OVER (PARTITION BY feeditem_id ORDER BY ffectiveDateUTC DESC) AS RN
  FROM spotquotes
  )
 SELECT Id 
        ,feeditem_id 
        ,value_ask
        ,value_bid
        ,effectiveDateUTC
 FROM LastestRecords
 WHERE RN = 1

OU

Créez un index comme suit

CREATE NONCLUSTERED INDEX NIX_feeditem_id_Id
ON dbo.spotquotes(feeditem_id ASC, ID DESC)
GO

Requête

;WITH LastestRecords
 AS(
   SELECT Id 
        ,feeditem_id 
        ,value_ask
        ,value_bid
        ,effectiveDateUTC
        ,ROW_NUMBER() OVER (PARTITION BY feeditem_id ORDER BY Id DESC) AS RN
  FROM spotquotes
  )
 SELECT Id 
        ,feeditem_id 
        ,value_ask
        ,value_bid
        ,effectiveDateUTC
 FROM LastestRecords
 WHERE RN = 1