나는 모니터링 프로젝트를 진행하고 있으며 데이터를 수집 할 때마다 해당 컬렉션에 대한 새 ID를 생성합니다.인덱싱 된보기를 사용하여 최신 레코드 받기
인덱스 된 뷰에서 최신 코드를 갖고 싶습니다. 이 같은
SELECT THE_ID = MAX(THE_ID) FROM [dbo].[monit_server_space_by_drive]
뭔가 :
CREATE VIEW V_LAST_ID
WITH SCHEMABINDING
AS
SELECT THE_ID = MAX(THE_ID) FROM [dbo].[monit_server_space_by_drive]
CREATE UNIQUE CLUSTERED INDEX UC_IDX_V_LAST_ID ON V_LAST_ID (THE_ID)
이 가능하거나 어떤 대안이 있습니까?
이 내가 그것을 사용하려는 방법입니다
테이블의 기본 키가 [DBO] [monit_server_space_by_drive] 세 개의 필드로 구성되어SELECT
M.[THE_ID]
,M.[serverid]
,s.SQLServerName
,s.[Environment]
,M.[DRIVE]
,M.[Volume_Size_GB]
,[VolumeUsed_GB] = CAST (M.[VolumeUsed_MB]/1024.00 AS NUMERIC (18,2))
,M.[VolumeSpaceAvailable_GB]
, DrivePercentUsed = 100 - M.[VolumePercentAvailable]
,M.[VolumePercentAvailable]
FROM [dbo].[monit_server_space_by_drive] M
INNER JOIN DBO.V_LAST_ID V
ON M.THE_ID = V.THE_ID
INNER JOIN [dbo].[tblServers] S
ON M.serverid = s.ServerID
order by M.[ClusterName]
:.
USE [Monitoring]
GO
ALTER TABLE [dbo].[monit_server_space_by_drive] ADD CONSTRAINT [PK_monit_server_space_by_drive] PRIMARY KEY CLUSTERED
( [THE_ID] ASC,
[serverid] ASC,
[volumeID] ASC
)ON [FGMONITORING]
테이블 정의 :
CREATE TABLE [dbo].[monit_server_space_by_drive](
[THE_ID] [int] NOT NULL,
[serverid] [int] NOT NULL,
[ClusterName] [nvarchar](260) NOT NULL,
[nodeid] [int] NOT NULL,
[DRIVE] [nchar](1) NULL,
[volumeID] [int] NOT NULL,
[LastSync] [datetime] NULL,
[Volume_Size_MB] [numeric](18, 2) NULL,
[Volume_Size_GB] [numeric](18, 2) NULL,
[VolumeSpaceAvailable_MB] [numeric](18, 2) NULL,
[VolumeSpaceAvailable_GB] [numeric](18, 2) NULL,
[VolumePercentAvailable] [numeric](5, 2) NULL,
[dt] [datetime] NULL,
[_year] [smallint] NULL,
[_month] [tinyint] NULL,
[_day] [tinyint] NULL,
[_week] [tinyint] NULL CONSTRAINT [DF_monit_server_space_by_drive__week] DEFAULT ((0)),
[_hour] [tinyint] NULL,
[_min] [tinyint] NULL,
[_weekday] [tinyint] NULL,
[VolumeUsed_MB] AS ([volume_size_MB]-[volumeSpaceAvailable_MB]) PERSISTED,
CONSTRAINT [PK_monit_server_space_by_drive] PRIMARY KEY CLUSTERED
(
[THE_ID] ASC,
[serverid] ASC,
[volumeID] ASC
) ON [FGMONITORING_INDEX]
) ON [FGMONITORING]
아래 표는이 테이블에 들어있는 데이터의 예입니다. 연결을 위해 데이터를 수집 할 때마다 THE_ID가 1 씩 증가합니다. 같은 THE_ID 안에는 내 환경에 모든 서버가 있습니다.
bsivel, 내가 뷰를 사용하는 방법을 추가하고 테이블의 기본 키가 무엇인지 추가하는 질문을 편집했습니다. 나는 현재 인덱싱되지 않고 뷰를 사용하고 있으며 좋은 결과를 얻었습니다. –
THE_ID 필드를 ID로 생성하고 있습니까? 질문에 표 정의를 넣으면 도움이됩니다. – bsivel
bsivel 요청한 모든 정보를 포함하도록 질문을 다시 편집했습니다. 감사. –