Revision 65a9ee16
Utilisation d'un UNION ALL en remplacement du UNION actuel.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@6270 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/controllers/vigiboardrequest.py | ||
---|---|---|
29 | 29 |
from repoze.what.predicates import in_group |
30 | 30 |
|
31 | 31 |
from sqlalchemy import not_, and_, asc, desc |
32 |
from sqlalchemy.sql.expression import or_, null as expr_null, union |
|
32 |
from sqlalchemy.sql.expression import or_, null as expr_null, union_all
|
|
33 | 33 |
|
34 | 34 |
from vigilo.models.session import DBSession |
35 | 35 |
from vigilo.models.tables import Event, CorrEvent, EventHistory, \ |
... | ... | |
129 | 129 |
|
130 | 130 |
# Objet Selectable renvoyant des informations sur un SupItem |
131 | 131 |
# concerné par une alerte, avec prise en compte des droits d'accès. |
132 |
# On est obligés d'utiliser sqlalchemy.sql.expression.union |
|
132 |
# On est obligés d'utiliser sqlalchemy.sql.expression.union_all
|
|
133 | 133 |
# pour indiquer à SQLAlchemy de NE PAS regrouper les tables |
134 | 134 |
# dans la requête principale, sans quoi les résultats sont |
135 | 135 |
# incorrects. |
136 |
self.items = union(lls_query, host_query, correlate=False).alias() |
|
136 |
# Dans PostgreSQL, UNION ALL est beaucoup plus rapide que UNION |
|
137 |
# du fait des performances limitées du DISTINCT. |
|
138 |
self.items = union_all(lls_query, host_query, correlate=False).alias() |
|
137 | 139 |
|
138 | 140 |
# Éléments à retourner (SELECT ...) |
139 | 141 |
self.table = [] |
Also available in: Unified diff