Fråga : MySQL vikarier bordlägger LÅNGSAMT!

Så jag har denna proc som är DEAD LÅNGSAM. Den tar noterar för att gå tillbaka. Om jag inte använder, en vikarie bordlägger, det tar omkring ett tionde av ledtrådar för second.

Any?
> för
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:
" codeBody " " notpretty class= " för -- -------------------------------------------------------------------------------- -- Rutinmässig DDL -- -------------------------------------------------------------------------------- DELIMITER $$ SKAPA DEFINER=-`rotar `för `getCompanyOverviewV4 för TILLVÄGAGÅNGSSÄTTET för `för `- @ `- localhost ( I iCk INT (10) ZEROFILL ) BÖRJA SKAPA TILLFÄLLIGT BORDLÄGGER, OM INTE FINNS filingIDTT ( filingID INT ); MELLANLÄGG IN I filingIDTT (filingID) VÄLJ filingID FRÅN aggr_filings VAR cik_issuer = iCIK; VÄLJ * FRÅN aggr_filings VAR filingID IN (VÄLJ filingID FRÅN filingIDTT); VÄLJ * FRÅN aggr_transactions VAR filingID IN (VÄLJ filingID FRÅN filingIDTT); VÄLJ * FRÅN ceostockwatch.aggr_owners VAR filingID IN (VÄLJ filingID FRÅN filingIDTT); TAPPA TILLFÄLLIGT BORDLÄGGER filingIDTT; AVSLUTA
" klar "

Svar : MySQL vikarier bordlägger LÅNGSAMT!

                 Hi!

Din aggr_filingID har indexet på kolonncik_issueren?
Om inte jag skulle, skapa ett non-unique index på kolonnerna (cik_issuer, filingID) som
skulle ge dig indexerar-endast bildläsning/läsning för den första queryen.
Därefter jag skulle skapar eller har ett index på kolonnfilingIDen det tillfälligt att bordlägga filingIDTT
gilla detta

SKAPA TILLFÄLLIGT BORDLÄGGER, OM INTE FINNS filingIDTT (
        filingID INT, INDEX USING BTREEN (filingID)
    );

Hoppas detta hjälper.

Hälsningar,
      Tomas Helgi
Andra lösningar  
 
programming4us programming4us