Da qualche settimana mi sono messo a sviluppare un piccolo cms / catalogo in php / sql (dbms : mysql)
La tabella prodotti conta circa 5000 records, a questa si aggiunge una tabella di altri 18000 records la cui funzione è quella di contenere degli "alias" (non è esattamente così ma facciamola breve..) per i vari articoli della prima tabella prodotti.
Il problema si verifica nello script per la ricerca di un articolo nel database.
Questo script si occupa di effettuare una ricerca incrociata fra la tabella prodotti e la tabella relazioni.
Per ogni articolo ci sono "x" relazioni, ogni relazione appartiene ad una "marca" (ad esempio, se fossero scarpe potremmo dire "nike").
Una volta effettuata la ricerca immettendo soltanto la marca, (attendomi a quanto scritto , "nike") vorrei visualizzare soltanto una sola volta l'articolo e non "x" volte quante sono le relazioni, per ovviare a questo "problema" ho provato ad utilizzare GROUP BY id_articolo .. una catastrofe: la query dura fino a 14 secondi.
Così ho provato a fare un "SELECT DISTINCT id_articolo, codice_articolo .. " .. In alcuni casi migliora , in altri si gira attorno agli 8 secondi.
Questa è la query:
- Codice: Seleziona tutto
SELECT DISTINCT ( b.codice_articolo ), id_categoria, descrizione_it, descrizione_en FROM vtx_prodotti as a INNER JOIN vtx_prodotti_rel as b ON a.codice_articolo = b.codice_articolo WHERE a.id_categoria !=2 AND b.marca LIKE "%something%" ORDER by a.codice_articolo ASC
Avete qualche idea per migliorare la situazione?