Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Geeigneter SQL Server-Index für Nur-Einfügen-Schema

Nur-Insert-Index :S I Thin-Insert-Only-Schemas lassen Sie am besten ohne Indizes, aber wenn Sie einen Index für eine Tabelle haben, wird die Leistung Ihrer Einfügeoperationen beeinträchtigt.

Was ist mit dem Erstellen eines Indexes für feeditem_id und effectiveDateUTC Felder etwas wie

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

und jetzt schreiben Sie Ihre Abfrage so etwas wie .....

;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

ODER

Erstellen Sie wie folgt einen Index

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

Abfrage

;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