我有下面的表X最新行:選擇一列的每個唯一值
- 事件ID - >主鍵,數字越大表示新
- 的itemid - >外鍵的項目表
- 消息 - >事件消息
將有100 /對於每個的itemid事件1000。我需要的是從表中爲itemid的每個唯一值獲取X個最新事件。在這種情況下,X是20,「最新」是最高的eventid。
我之前做的是獲取整個表格,只保留每個itemid最新的20個。這是非常緩慢和低效的。
編輯:我使用的OpenNMS和事件表(OpenNMS create.sql):(itemid的==節點ID)
create table events (
eventID integer not null,
eventUei varchar(256) not null,
nodeID integer,
eventTime timestamp with time zone not null,
eventHost varchar(256),
eventSource varchar(128) not null,
ipAddr varchar(16),
eventDpName varchar(12) not null,
eventSnmphost varchar(256),
serviceID integer,
eventSnmp varchar(256),
eventParms text,
eventCreateTime timestamp with time zone not null,
eventDescr varchar(4000),
eventLoggroup varchar(32),
eventLogmsg varchar(256),
eventSeverity integer not null,
eventPathOutage varchar(1024),
eventCorrelation varchar(1024),
eventSuppressedCount integer,
eventOperInstruct varchar(1024),
eventAutoAction varchar(256),
eventOperAction varchar(256),
eventOperActionMenuText varchar(64),
eventNotification varchar(128),
eventTticket varchar(128),
eventTticketState integer,
eventForward varchar(256),
eventMouseOverText varchar(64),
eventLog char(1) not null,
eventDisplay char(1) not null,
eventAckUser varchar(256),
eventAckTime timestamp with time zone,
alarmID integer,
constraint pk_eventID primary key (eventID)
);
我的查詢很簡單:
SELECT eventid, nodeid, eventseverity, eventtime, eventlogmsg
FROM events
WHERE nodeid IS NOT NULL;
你可以發佈你的表結構爲'CREATE TABLE ...',數據示例和你現有的查詢嗎? –
@IgorRomanchenko編輯了這些細節的帖子 – Smitty