Skip to content

Commit 0a2303f

Browse files
Merge pull request mattiasgeniar#14 from ehuelsmann/more-performance
Increase SELECT and DELETE performance
2 parents cca0dcf + 36bf200 commit 0a2303f

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

checkscript.sql

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- Count the amount of rows that would be deleted for orphaned alerts entries
2-
SELECT COUNT(*) FROM alerts WHERE NOT actionid IN (SELECT actionid FROM actions);
3-
SELECT COUNT(*) FROM alerts WHERE NOT eventid IN (SELECT eventid FROM events);
2+
SELECT COUNT(*) FROM alerts WHERE NOT EXISTS (SELECT 1 FROM actions WHERE alerts.actionid = actions.actionid);
3+
SELECT COUNT(*) FROM alerts WHERE NOT EXISTS (SELECT 1 FROM events WHERE alerts.eventid = events.eventid);
44
SELECT COUNT(*) FROM alerts WHERE NOT userid IN (SELECT userid FROM users);
55
SELECT COUNT(*) FROM alerts WHERE NOT mediatypeid IN (SELECT mediatypeid FROM media_type);
66

@@ -62,14 +62,14 @@ SELECT COUNT(*) FROM trigger_depends WHERE triggerid_down NOT IN (SELECT trigger
6262
SELECT COUNT(*) FROM trigger_depends WHERE triggerid_up NOT IN (SELECT triggerid FROM triggers);
6363

6464
-- Count the amount of records in the history/trends table for items that no longer exist
65-
SELECT COUNT(itemid) FROM history WHERE itemid NOT IN (SELECT itemid FROM items);
66-
SELECT COUNT(itemid) FROM history_uint WHERE itemid NOT IN (SELECT itemid FROM items);
67-
SELECT COUNT(itemid) FROM history_log WHERE itemid NOT IN (SELECT itemid FROM items);
68-
SELECT COUNT(itemid) FROM history_str WHERE itemid NOT IN (SELECT itemid FROM items);
69-
SELECT COUNT(itemid) FROM history_text WHERE itemid NOT IN (SELECT itemid FROM items);
65+
SELECT COUNT(itemid) FROM history WHERE NOT EXISTS (SELECT 1 FROM items WHERE history.itemid = items.itemid);
66+
SELECT COUNT(itemid) FROM history_uint WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_uint.itemid = items.itemid);
67+
SELECT COUNT(itemid) FROM history_log WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_log.itemid = items.itemid);
68+
SELECT COUNT(itemid) FROM history_str WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_str.itemid = items.itemid);
69+
SELECT COUNT(itemid) FROM history_text WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_text.itemid = items.itemid);
7070

71-
SELECT COUNT(itemid) FROM trends WHERE itemid NOT IN (SELECT itemid FROM items);
72-
SELECT COUNT(itemid) FROM trends_uint WHERE itemid NOT IN (SELECT itemid FROM items);
71+
SELECT COUNT(itemid) FROM trends WHERE NOT EXISTS (SELECT 1 FROM items WHERE trends.itemid = items.itemid);
72+
SELECT COUNT(itemid) FROM trends_uint WHERE NOT EXISTS (SELECT 1 FROM items WHERE trends_uint.itemid = items.itemid);
7373

7474
-- Count the amount of records in the events table for triggers/items that no longer exist
7575
SELECT COUNT(eventid) FROM events WHERE source = 0 AND object = 0 AND objectid NOT IN (SELECT triggerid FROM triggers);
@@ -81,3 +81,4 @@ SELECT COUNT(*) FROM acknowledges WHERE NOT eventid IN (SELECT eventid FROM even
8181
SELECT COUNT(*) FROM acknowledges WHERE NOT userid IN (SELECT userid FROM users);
8282
SELECT COUNT(acknowledgeid) FROM acknowledges WHERE eventid IN (SELECT eventid FROM events WHERE (source = 0 OR source=3) AND object = 0 AND objectid NOT IN (SELECT triggerid FROM triggers));
8383
SELECT COUNT(acknowledgeid) FROM acknowledges WHERE eventid IN (SELECT eventid FROM events WHERE source=3 AND object = 4 AND objectid NOT IN (SELECT itemid FROM items));
84+

cleanup.sql

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- Delete orphaned alerts entries
2-
DELETE FROM alerts WHERE NOT actionid IN (SELECT actionid FROM actions);
3-
DELETE FROM alerts WHERE NOT eventid IN (SELECT eventid FROM events);
2+
DELETE FROM alerts WHERE NOT EXISTS (SELECT 1 FROM actions WHERE alerts.actionid = actions.actionid);
3+
DELETE FROM alerts WHERE NOT EXISTS (SELECT 1 FROM events WHERE alerts.eventid = events.eventid);
44
DELETE FROM alerts WHERE NOT userid IN (SELECT userid FROM users);
55
DELETE FROM alerts WHERE NOT mediatypeid IN (SELECT mediatypeid FROM media_type);
66

@@ -54,28 +54,31 @@ DELETE FROM rights WHERE NOT groupid IN (SELECT usrgrpid FROM usrgrp);
5454
DELETE FROM rights WHERE NOT id IN (SELECT groupid FROM groups);
5555
DELETE FROM sessions WHERE NOT userid IN (SELECT userid FROM users);
5656

57-
-- Screens
57+
-- Delete orphaned screens
5858
DELETE FROM screens_items WHERE screenid NOT IN (SELECT screenid FROM screens);
5959

60-
-- Events & triggers
60+
-- Delete orphaned events & triggers
6161
DELETE FROM trigger_depends WHERE triggerid_down NOT IN (SELECT triggerid FROM triggers);
6262
DELETE FROM trigger_depends WHERE triggerid_up NOT IN (SELECT triggerid FROM triggers);
6363

64-
-- Delete records in the history/trends table where items that no longer exist
65-
DELETE FROM history WHERE itemid NOT IN (SELECT itemid FROM items);
66-
DELETE FROM history_uint WHERE itemid NOT IN (SELECT itemid FROM items);
67-
DELETE FROM history_log WHERE itemid NOT IN (SELECT itemid FROM items);
68-
DELETE FROM history_str WHERE itemid NOT IN (SELECT itemid FROM items);
69-
DELETE FROM history_text WHERE itemid NOT IN (SELECT itemid FROM items);
64+
-- Delete records in the history/trends table for items that no longer exist
65+
DELETE FROM history WHERE NOT EXISTS (SELECT 1 FROM items WHERE history.itemid = items.itemid);
66+
DELETE FROM history_uint WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_uint.itemid = items.itemid);
67+
DELETE FROM history_log WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_log.itemid = items.itemid);
68+
DELETE FROM history_str WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_str.itemid = items.itemid);
69+
DELETE FROM history_text WHERE NOT EXISTS (SELECT 1 FROM items WHERE history_text.itemid = items.itemid);
7070

71-
DELETE FROM trends WHERE itemid NOT IN (SELECT itemid FROM items);
72-
DELETE FROM trends_uint WHERE itemid NOT IN (SELECT itemid FROM items);
71+
DELETE FROM trends WHERE NOT EXISTS (SELECT 1 FROM items WHERE trends.itemid = items.itemid);
72+
DELETE FROM trends_uint WHERE NOT EXISTS (SELECT 1 FROM items WHERE trends_uint.itemid = items.itemid);
7373

74-
-- Delete records in the events table where triggers/items no longer exist
74+
-- Delete records in the events table for triggers/items that no longer exist
7575
DELETE FROM events WHERE source = 0 AND object = 0 AND objectid NOT IN (SELECT triggerid FROM triggers);
7676
DELETE FROM events WHERE source = 3 AND object = 0 AND objectid NOT IN (SELECT triggerid FROM triggers);
7777
DELETE FROM events WHERE source = 3 AND object = 4 AND objectid NOT IN (SELECT itemid FROM items);
7878

7979
-- Delete all orphaned acknowledge entries
80-
DELETE FROM acknowledges WHERE eventid NOT IN (SELECT eventid FROM events);
81-
DELETE FROM acknowledges WHERE userid NOT IN (SELECT userid FROM users);
80+
DELETE FROM acknowledges WHERE NOT eventid IN (SELECT eventid FROM events);
81+
DELETE FROM acknowledges WHERE NOT userid IN (SELECT userid FROM users);
82+
DELETE FROM acknowledges WHERE eventid IN (SELECT eventid FROM events WHERE (source = 0 OR source=3) AND object = 0 AND objectid NOT IN (SELECT triggerid FROM triggers));
83+
DELETE FROM acknowledges WHERE eventid IN (SELECT eventid FROM events WHERE source=3 AND object = 4 AND objectid NOT IN (SELECT itemid FROM items));
84+

0 commit comments

Comments
 (0)