Ich habe diese zwei Version der gleichen Abfrage. Beide produzieren die gleichen Ergebnisse (164 Zeilen). Aber der zweite dauert 0,5 Sekunden, während der erste 17 Sekunden dauert. Kann mir jemand erklären, was hier vor sich geht?Verstehen den Unterschied zwischen zwei Abfragen von Leistungspunkt
TABLE organizations : 11988 ROWS
TABLE transaction_metas : 58232 ROWS
TABLE contracts_history : 219469 ROWS
# TAKES 17 SEC
SELECT contracts_history.buyer_id as id, org.name, SUM(transactions_count) as transactions_count, GROUP_CONCAT(DISTINCT(tm.value)) as balancing_authorities
From `contracts_history`
INNER JOIN `organizations` as `org`
ON `org`.`id` = `contracts_history`.`buyer_id`
LEFT JOIN `transaction_metas` as `tm`
ON `tm`.`contract_token` = `contracts_history`.`token` and `tm`.`field` = '1'
WHERE `contracts_history`.`seller_id` = '850'
GROUP BY `contracts_history`.`buyer_id` ORDER BY `balancing_authorities` DESC
# TAKES .6 SEC
SELECT contracts_history.buyer_id as id, org.name, SUM(transactions_count) as transactions_count, GROUP_CONCAT(DISTINCT(tm.value)) as balancing_authorities
From `contracts_history`
INNER JOIN `organizations` as `org`
ON `org`.`id` = `contracts_history`.`buyer_id`
left join (select * from `transaction_metas` where contract_token in (select token from `contracts_history` where seller_id = 850)) as `tm`
ON `tm`.`contract_token` = `contracts_history`.`token` and `tm`.`field` = '1'
WHERE `contracts_history`.`seller_id` = '850'
GROUP BY `contracts_history`.`buyer_id` ORDER BY `balancing_authorities` DESC
Erklären Ergebnisse: Erste Frage: https://prnt.sc/hjtiw6
Zweite Frage: https://prnt.sc/hjtjjg
Wie basiert auf meinen Debuggen der ersten Abfrage klar war, dass left join
-transaction_metas
Tisch es langsam machte, So Ich habe versucht, die Zeilen zu begrenzen, anstatt mich an den gesamten Tisch anzuschließen. Es scheint zu funktionieren, aber ich verstehe nicht warum.
warm/kalt Daten Unterschiede? – jarlh
Ich denke, der Grund könnte in der ersten Abfrage sein, mit einer Tabelle 'transaction_metas' zu verbinden, während in der zweiten Abfrage es nicht mit allen Daten, sondern nur aus dieser Tabelle ausgewählt wird. –
@jarlh Sorry Sir. Ich verstehe nicht, was Sie mit heißen/kalten Daten meinen. – Ankit