MySQL left join + performance

0
        SELECT  

            *    #Case 1
            cp.* #Case 2

        FROM crawl_page AS cp
        LEFT JOIN artist AS a
            ON cp.cpURL LIKE CONCAT('%',a.artistPageID,'/',a.artistPageURL,'%')

        WHERE cpPageType = 'SONGS'
            AND cpPageAdded < (
                SELECT cpCrawlDate 
                FROM crawl_page 
                WHERE cpURL = 'http://www.example.com/page-52/'
            )

            AND a.artistID IS NULL  

        LIMIT 1

In questa query quando utilizzo il primo caso (selezionando tutto da entrambe le tabelle) il tempo impiegato per la query va bene circa 0.468 secondi.

Ma se faccio il caso 2 (selezionando solo dalla tabella principale) ci vorrà molto tempo 26 secondi.

Non è un problema usare solo il caso 1, ma non riesco a capire come funziona e perché?

Grazie

    
posta George Garchagudashvili 25.01.2014 - 20:01
fonte

0 risposte

Leggi altre domande sui tag