diff --git a/ChangeLog.d/bugfix/ZBX-26419 b/ChangeLog.d/bugfix/ZBX-26419
new file mode 100644
index 00000000000..9c7cc6a183d
--- /dev/null
+++ b/ChangeLog.d/bugfix/ZBX-26419
@@ -0,0 +1 @@
+A......... [ZBX-26419] improved performance of problem and event views by optimizing SQL queries to join only the necessary triggers, eliminating redundant post-join filtering (vso)
diff --git a/ui/include/classes/api/services/CAction.php b/ui/include/classes/api/services/CAction.php
index d810ba4a9c9..3677f54de3d 100644
--- a/ui/include/classes/api/services/CAction.php
+++ b/ui/include/classes/api/services/CAction.php
@@ -165,7 +165,7 @@ class CAction extends CApiService {
 				' WHERE a.actionid=c.actionid'.
 					' AND c.conditiontype IN ('.ZBX_CONDITION_TYPE_HOST.','.ZBX_CONDITION_TYPE_TEMPLATE.')'.
 					' AND c.value!='.zbx_dbstr('0').
-					' AND p.permission IS NULL'.
+					' AND p.hgsetid IS NULL'.
 			')';
 
 			// Check permissions of triggers used in filter conditions.
@@ -180,7 +180,7 @@ class CAction extends CApiService {
 				' WHERE a.actionid=c.actionid'.
 					' AND c.conditiontype='.ZBX_CONDITION_TYPE_TRIGGER.
 					' AND c.value!='.zbx_dbstr('0').
-					' AND p.permission IS NULL'.
+					' AND p.hgsetid IS NULL'.
 			')';
 
 			// Check permissions of user groups mentioned for "send message" operations.
@@ -243,7 +243,7 @@ class CAction extends CApiService {
 				' LEFT JOIN permission p ON hh.hgsetid=p.hgsetid'.
 					' AND p.ugsetid='.self::$userData['ugsetid'].
 				' WHERE a.actionid=o.actionid'.
-					' AND p.permission IS NULL'.
+					' AND p.hgsetid IS NULL'.
 			')';
 
 			// Check permissions of host groups used in discovery and autoregistration operations.
@@ -268,7 +268,7 @@ class CAction extends CApiService {
 				' LEFT JOIN permission p ON hh.hgsetid=p.hgsetid'.
 					' AND p.ugsetid='.self::$userData['ugsetid'].
 				' WHERE a.actionid=o.actionid'.
-					' AND p.permission IS NULL'.
+					' AND p.hgsetid IS NULL'.
 			')';
 		}
 
diff --git a/ui/include/classes/api/services/CAlert.php b/ui/include/classes/api/services/CAlert.php
index c8d831705c4..1725161a45a 100644
--- a/ui/include/classes/api/services/CAlert.php
+++ b/ui/include/classes/api/services/CAlert.php
@@ -216,8 +216,9 @@ class CAlert extends CApiService {
 					' JOIN host_hgset hh1 ON i1.hostid=hh1.hostid'.
 					' LEFT JOIN permission p1 ON hh1.hgsetid=p1.hgsetid'.
 						' AND p1.ugsetid=p.ugsetid'.
-					' WHERE e.objectid=f1.triggerid'.
-						' AND p1.permission IS NULL'.
+					' WHERE f.triggerid=f1.triggerid'.
+						' AND i.itemid!=f1.itemid'.
+						' AND p1.hgsetid IS NULL'.
 				')';
 			}
 			elseif (in_array($options['eventobject'], [EVENT_OBJECT_ITEM, EVENT_OBJECT_LLDRULE])) {
diff --git a/ui/include/classes/api/services/CEvent.php b/ui/include/classes/api/services/CEvent.php
index 1173b66c966..71c384a2aaf 100644
--- a/ui/include/classes/api/services/CEvent.php
+++ b/ui/include/classes/api/services/CEvent.php
@@ -244,8 +244,9 @@ class CEvent extends CApiService {
 					' JOIN host_hgset hh1 ON i1.hostid=hh1.hostid'.
 					' LEFT JOIN permission p1 ON p1.hgsetid=hh1.hgsetid'.
 						' AND p1.ugsetid=p.ugsetid'.
-					' WHERE e.objectid=f1.triggerid'.
-						' AND p1.permission IS NULL'.
+					' WHERE f.triggerid=f1.triggerid'.
+						' AND i.itemid!=f1.itemid'.
+						' AND p1.hgsetid IS NULL'.
 				')';
 
 				if ($options['source'] == EVENT_SOURCE_TRIGGERS) {
diff --git a/ui/include/classes/api/services/CGraph.php b/ui/include/classes/api/services/CGraph.php
index 65f92e054c3..32e46c0c97b 100644
--- a/ui/include/classes/api/services/CGraph.php
+++ b/ui/include/classes/api/services/CGraph.php
@@ -124,7 +124,7 @@ class CGraph extends CGraphGeneral {
 				' LEFT JOIN permission p1 ON hh1.hgsetid=p1.hgsetid'.
 					' AND p1.ugsetid=p.ugsetid'.
 				' WHERE g.graphid=gi1.graphid'.
-					' AND p1.permission IS NULL'.
+					' AND p1.hgsetid IS NULL'.
 			')';
 		}
 
diff --git a/ui/include/classes/api/services/CGraphItem.php b/ui/include/classes/api/services/CGraphItem.php
index 917c65b68fe..f5251b19d6a 100644
--- a/ui/include/classes/api/services/CGraphItem.php
+++ b/ui/include/classes/api/services/CGraphItem.php
@@ -87,7 +87,7 @@ class CGraphItem extends CApiService {
 				' LEFT JOIN permission p1 ON hh1.hgsetid=p1.hgsetid'.
 					' AND p1.ugsetid=p.ugsetid'.
 				' WHERE gi.graphid=gi1.graphid'.
-					' AND p1.permission IS NULL'.
+					' AND p1.hgsetid IS NULL'.
 			')';
 		}
 
diff --git a/ui/include/classes/api/services/CGraphPrototype.php b/ui/include/classes/api/services/CGraphPrototype.php
index f196fa21168..5e21d483c0d 100644
--- a/ui/include/classes/api/services/CGraphPrototype.php
+++ b/ui/include/classes/api/services/CGraphPrototype.php
@@ -123,7 +123,7 @@ class CGraphPrototype extends CGraphGeneral {
 				' LEFT JOIN permission p1 ON hh1.hgsetid=p1.hgsetid'.
 					' AND p1.ugsetid=p.ugsetid'.
 				' WHERE g.graphid=gi1.graphid'.
-					' AND p1.permission IS NULL'.
+					' AND p1.hgsetid IS NULL'.
 			')';
 		}
 
diff --git a/ui/include/classes/api/services/CMaintenance.php b/ui/include/classes/api/services/CMaintenance.php
index 3f8076e7836..1e469648244 100644
--- a/ui/include/classes/api/services/CMaintenance.php
+++ b/ui/include/classes/api/services/CMaintenance.php
@@ -100,8 +100,8 @@ class CMaintenance extends CApiService {
 			}
 
 			$permission_condition = $options['editable']
-				? ' AND (p.permission IS NULL OR p.permission < '.PERM_READ_WRITE.')'
-				: ' AND p.permission IS NULL';
+				? ' AND (p.hgsetid IS NULL OR p.permission < '.PERM_READ_WRITE.')'
+				: ' AND p.hgsetid IS NULL';
 
 			$sqlParts['where'][] = 'NOT EXISTS ('.
 				'SELECT NULL'.
diff --git a/ui/include/classes/api/services/CProblem.php b/ui/include/classes/api/services/CProblem.php
index 2c9a7457c4d..332ac7c91dd 100644
--- a/ui/include/classes/api/services/CProblem.php
+++ b/ui/include/classes/api/services/CProblem.php
@@ -153,8 +153,9 @@ class CProblem extends CApiService {
 					' JOIN host_hgset hh1 ON i1.hostid=hh1.hostid'.
 					' LEFT JOIN permission pp1 ON hh1.hgsetid=pp1.hgsetid'.
 						' AND pp1.ugsetid=pp.ugsetid'.
-					' WHERE p.objectid=f1.triggerid'.
-						' AND pp1.permission IS NULL'.
+					' WHERE f.triggerid=f1.triggerid'.
+						' AND i.itemid!=f1.itemid'.
+						' AND pp1.hgsetid IS NULL'.
 				')';
 
 				if ($options['source'] == EVENT_SOURCE_TRIGGERS) {
diff --git a/ui/include/classes/api/services/CTrigger.php b/ui/include/classes/api/services/CTrigger.php
index 8d5dba8d962..69aa0b31dc6 100644
--- a/ui/include/classes/api/services/CTrigger.php
+++ b/ui/include/classes/api/services/CTrigger.php
@@ -156,8 +156,9 @@ class CTrigger extends CTriggerGeneral {
 				' JOIN host_hgset hh1 ON i1.hostid=hh1.hostid'.
 				' LEFT JOIN permission p1 ON hh1.hgsetid=p1.hgsetid'.
 					' AND p1.ugsetid=p.ugsetid'.
-				' WHERE t.triggerid=f1.triggerid'.
-					' AND p1.permission IS NULL'.
+				' WHERE f.triggerid=f1.triggerid'.
+					' AND i.itemid!=f1.itemid'.
+					' AND p1.hgsetid IS NULL'.
 			')';
 		}
 
diff --git a/ui/include/classes/api/services/CTriggerPrototype.php b/ui/include/classes/api/services/CTriggerPrototype.php
index c27ebefd067..6536605c3fb 100644
--- a/ui/include/classes/api/services/CTriggerPrototype.php
+++ b/ui/include/classes/api/services/CTriggerPrototype.php
@@ -127,8 +127,9 @@ class CTriggerPrototype extends CTriggerGeneral {
 				' JOIN host_hgset hh1 ON i1.hostid=hh1.hostid'.
 				' LEFT JOIN permission p1 ON hh1.hgsetid=p1.hgsetid'.
 					' AND p1.ugsetid=p.ugsetid'.
-				' WHERE t.triggerid=f1.triggerid'.
-					' AND p1.permission IS NULL'.
+				' WHERE f.triggerid=f1.triggerid'.
+					' AND i.itemid!=f1.itemid'.
+					' AND p1.hgsetid IS NULL'.
 			')';
 		}
 
