So veranlassen Sie MySQL, zuerst die Unterabfrage auszuwertenMySql

MySQL DBMS-Forum
Anonymous
 So veranlassen Sie MySQL, zuerst die Unterabfrage auszuwerten

Post by Anonymous »

Unten ist die Abfrage:

Code: Select all

SELECT tt.trans_type_name as TRANSACTION_TYPE, trans.TRANSACTION_TIME, a.trans_action_name as TRANSACTION_ACTION_NAME, trans.TRANSACTION_NOTES
FROM
(SELECT CAST(added_on AS char) AS TRANSACTION_TIME, notes as TRANSACTION_NOTES, trans_type_id AS TRANS_TYPE, trans_action_id AS ACTION_ID FROM transactions WHERE added_by = 'service_app' AND notes LIKE %(domain)s AND added_on BETWEEN %(transactionStartDate)s and %(transactionEndDate)s) trans
LEFT JOIN transaction_types tt ON trans.TRANS_TYPE = tt.trans_type_id
LEFT JOIN transaction_actions a ON trans.ACTION_ID = a.trans_action_id
ORDER BY trans.TRANSACTION_TIME DESC
Dies ist eine Abfrage, die ich neu geschrieben habe, weil die ältere Abfrage den Fehler hatte:

Das SELECT würde mehr als MAX_JOIN_SIZE Zeilen untersuchen; Überprüfen Sie Ihr WHERE und verwenden Sie SET SQL_BIG_SELECTS=1 oder SET MAX_JOIN_SIZE=#, wenn SELECT in Ordnung ist.

Die neue Abfrage (oben beschrieben) ist schneller, aber ich erhalte immer noch den MAX_JOIN-Fehler. Die Sache ist, ich kann SET SQL_BIG_SELECTS=1 nicht setzen. Mein Wunsch ist es, zuerst die Unterabfrage auszuwerten, da es für die von mir eingefügten Werte nur drei Zeilen gibt. Die Verknüpfung muss nur für die drei Zeilen erfolgen, da dabei lediglich die ID durch den entsprechenden Wert ersetzt wird.
Gibt es eine Möglichkeit? Vielen Dank im Voraus.
Bearbeiten:
Etwas mehr Klarheit – 3 Tabellen transactions,transaction_types und transaction_actions.
Die Basistabelle sind die transactions mit mehr als Millionen Zeilen. Es verfügt über zwei IDs, die auf die beiden anderen Tabellen verweisen. Ich möchte die Namen anstelle der IDs auswählen, um mich anzuschließen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post