Frage : MySQL Temptabelle LANGSAM!

So habe ich dieses proc, das ABSOLUT LANGSAM ist. Es dauert Minuten zur Rückkehr. Wenn ich nicht eine Temptabelle benutze, nimmt sie ein ungefähr zehntes ein second.

Any der Anhaltspunkte?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
-- --------------------------------------------------------------------------------
-- Programm DDL
-- --------------------------------------------------------------------------------
BEGRENZER $$

DEFINER= `Wurzel `@ `localhost `VERFAHREN `getCompanyOverviewV4 `VERURSACHEN (
  Im iCk INT (10) ZEROFILL
)
ANFANGEN

    TEMPORÄRE TABELLE HERSTELLEN, WENN NICHT filingIDTT EXISTIERT (
        filingID INT
    );

    EINSATZ IN filingIDTT (filingID)
    filingID VORWÄHLEN
    Von den aggr_filings
    WO cik_issuer = iCIK;

    VORWÄHLEN *
    Von den aggr_filings
    WO filingID INNEN (filingID vom filingIDTT VORWÄHLEN);

    VORWÄHLEN *
    Von den aggr_transactions
    WO filingID INNEN (filingID vom filingIDTT VORWÄHLEN);

    VORWÄHLEN *
    VON ceostockwatch.aggr_owners
    WO filingID INNEN (filingID vom filingIDTT VORWÄHLEN);

    TEMPORÄRE TABELLE filingIDTT FALLENLASSEN;

ENDE

Antwort : MySQL Temptabelle LANGSAM!

                 Hallo!

Hat Ihr aggr_filingID Index auf dem Spalte cik_issuer?
Wenn nicht ich einen non-unique Index auf den Spalten (cik_issuer, filingID) die verursachen würde
würde Ihnen Index-nur Scan/Messwert für die erste Frage geben.
Dann würde ich einen Index auf dem Spalte filingID das temporäre Tabelle filingIDTT verursachen oder haben
so

TEMPORÄRE TABELLE HERSTELLEN, WENN NICHT filingIDTT EXISTIERT (
        filingID INT, INDEX USING BTREE (filingID)
    );

Hoffen, dass dieses hilft.

Respekt,
      Tomas Helgi
Weitere Lösungen  
 
programming4us programming4us