Ich habe 6 Tabellen. Sie alle können Millionen und Abermillionen von Datenzeilen haben. Alle Tabellen haben Spalten object_id, changer_id, date_created.Kombinieren Abfragen auf mehrere Tabellen mit den gleichen Spalten in einer Abfrage
Ich brauche eine Abfrage auf alle Tabellen
SELECT object_id
FROM table#
WHERE changer_id=someId
AND date_created > dateA
AND dateCreated < dateB
oder seine grails machen gleichwertig
table#.createQuery().list{
projections{property('object_id')}
eq('changer_id', someId)
ge('dateCreated' dateA)
le('dateCreated', dateB)
}
gleiche Abfrage auf allen 6 Tischen gemacht werden, und dann sind die Ergebnisse kombiniert und alle Duplikate werden entfernt.
Ich verwende nicht zwischen, da DateB nicht immer existiert, so würde es weggelassen werden.
Gibt es eine Möglichkeit, diese Abfrage in einzelne Abfrage über 6 Tabellen oder auf andere Weise zu kombinieren, um es schneller als 6 separate Abfragen zu machen?
eine Union Abfrage könnte tun, dass https://www.postgresql.org/docs/current/static /queries-union.html - Am Ende kann man die DataSource immer selbst machen. – cfrick
@cfrick Ich "kann immer die Datenquelle"? Ich denke, dass einige Wörter fehlen. Und mit union wird es immer noch 6 verschiedene Queries machen, am Ende kombiniert es sie einfach, ist es etwas schwächer als die 6 Abfragen getrennt zu machen und sie dann zu kombinieren? –
"Sie können immer den DS injizieren"; und am wahrscheinlichsten, dass es schneller ist, weil die DB die ganze Arbeit erledigt und nur die geringste Menge an Daten zurückgibt. aber natürlich: leistung muss gemessen werden und nicht cargo culted. – cfrick