zu beschleunigen ich eine SQL-Abfrage bin mit Geld-Transaktionen aus meiner Orientdb Datenbank (v2.1.16)Orientdb: langsame Abfragen, die Hilfe benötigen, Index erstellen es
Die Abfrage läuft langsam abgerufen werden, und ich möchte wissen, wie man den Index erstellt, der es beschleunigt.
Die Abfrage ist:
SELECT timestamp, txId
FROM MoneyTransaction
WHERE (
out("MoneyTransactionAccount").in("AccountMoneyProfile")[accountId] = :accountId
AND moneyType = :moneyType
AND :registerType IN registerQuantities.keys()
)
ORDER BY timestamp DESC, @rid DESC
Ich habe auch eine andere Variante, die die Liste von einem bestimmten Zeitpunkt wieder aufgenommen:
SELECT timestamp, txId
FROM MoneyTransaction
WHERE (
out("MoneyTransactionAccount").in("AccountMoneyProfile")[accountId] = :accountId
AND moneyType = :moneyType
AND :registerType IN registerQuantities.keys()
)
AND timestamp <= :cutoffTimestamp
AND txId NOT IN :cutoffTxIds
ORDER BY timestamp DESC, @rid DESC
Die Schwierigkeit Ich habe versucht, herauszufinden, wie zu erstellen ein Index mit den komplexeren Feldern, nämlich das Feld accountId, das sich nicht innerhalb desselben Eckpunkts befindet, und das Feld registerType, das sich in einem EMBEDDEDMAP-Feld befindet.
Welchen Index würden Sie erstellen, um diese Abfrage zu beschleunigen? Oder wie würden Sie diese Abfrage umschreiben?
Meine Struktur ist wie folgt:
[Account] --> (1 to 1) AccountMoneyProfile --> [MoneyProfile]
[MoneyTransaction] --> (n to 1) MoneyTransactionAccount --> [MoneyProfile]
Wichtige Felder:
Account.accountId STRING
MoneyTransaction.registerQuantities EMBEDDEDMAP
MoneyTransaction.timestamp DATETIME
Das Konto, das ich im Moment bin Holen hat etwa 500 MoneyTransaction Ecken daran befestigt.
Hallo @hbCyber, könnten Sie ein Beispiel Ihrer Struktur posten? Wie viele Datensätze haben Sie in Ihrer DB? – LucaS
@LucaS Danke für die Nachfrage, ich habe die obigen Details hinzugefügt. – hbCyber
Hallo @hbCyber, sind Ihre Klassen ähnlich denen: 'Konto (accountId)', 'MoneyTransaction (txId, timestamp, registerQuantities, moneyType)', 'MoneyProfile (?)'? – LucaS