Mysql Tisch sitzen zu viel Zeit, während einfache Auswahl schnell Ergebnisse

stimmen
-1

Ich habe eine InnoDB - Tabelle daily_sales_msr.

Wenn ich eine Abfrage aus der Tabelle laufen, ohne daran teilzunehmen, gibt die Abfrage schnell die Ausgabe.

Aber, wenn ich diesen Tisch auch mit einem kleinen Tisch kommen, dann dauert es zu viel Zeit. Was ist die Lösung für dieses Problem?

Zum Beispiel:

SELECT
sku.ssku,
ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
MONTHNAME(daily_sales_msr.date) AS `month`
FROM
daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE
daily_sales_msr.date BETWEEN '2018-08-01'
AND '2018-08-08'
GROUP BY
daily_sales_msr.skid

Diese Abfrage dauert mehr als 1000s.

Ohne jede Verbindung dauert es nur 0,15 s.

Veröffentlicht am 02/09/2018 um 05:26
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

für die Leistung sein , dass Sie die richtigen Index haben
in Ihrem Fall , dass Sie einen zusammengesetzten Index verwenden könnten auf

table daily_sales_msr for  columns  (skid,date) 

und für SQL Sie verwenden Gruppe durch, aber einige der Spalte in ausgewählten nicht in der Gruppe sind nicht auf Aggregationsfunktion im Zusammenhang dies in den meisten db Motor E in mysql Ausgangsform 5.7 NOTB von defualt alloed ist .. das Ergebnis für diese Spalten ist unberechenbar so Sie sollten diese Spalten zu einer Gruppe hinzufügen, indem Sie

SELECT
  sku.ssku,
  ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
  MONTHNAME(daily_sales_msr.date) AS `month`
FROM  daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE  daily_sales_msr.date BETWEEN '2018-08-01'  AND '2018-08-08'
GROUP BY  daily_sales_msr.skid, month 

oder eine Aggregationsfunktion verwendet auch für diese Spalten

SELECT
  sku.ssku,
  ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
  MAX(MONTHNAME(daily_sales_msr.date)) AS `month`
FROM  daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE  daily_sales_msr.date BETWEEN '2018-08-01'  AND '2018-08-08'
GROUP BY  daily_sales_msr.skid
Beantwortet am 02/09/2018 um 06:31
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more