Ciao,
stò portando avanti il progettone per un esame e devo ottimizzare al massimo alcune query SQL...come già mi è stato spiegato ci pensa l'ottimizzatore di query di MySql ma non si sa bene per quale motivo la proff come requisito fondamentale del progetto vuole che gliele portiamo anche in forma ottimizata...mi sò impiccando un po' a tentare di ottimizzare alcune query...mi date qualche idea per favore?
Le tabelle da usare e la relativa struttura sono le seguenti:
E le query da ottimizzare sono le seguenti:codice:TABELLA COMMENTO: mysql> describe COMMENTO; +--------------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+-------------+------+-----+---------+----------------+ | Id_Commento | int(11) | NO | PRI | NULL | auto_increment | | Commentatore | varchar(20) | NO | MUL | NULL | | | Oggetto_Commentato | int(11) | NO | MUL | NULL | | | Data | datetime | NO | | NULL | | | Titolo | varchar(30) | NO | | NULL | | | Commento | text | NO | | NULL | | +--------------------+-------------+------+-----+---------+----------------+ TABELLA INSERZIONE: mysql> describe INSERZIONE; +-----------------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-----------------------+------+-----+---------+----------------+ | Id_Oggetto | int(11) | NO | PRI | NULL | auto_increment | | Titolo | varchar(60) | NO | MUL | NULL | | | Descrizione | text | YES | | NULL | | | Costo_Base | decimal(6,2) | YES | | NULL | | | Compralo_Subito | decimal(6,2) | YES | | NULL | | | Scadenza | datetime | YES | | NULL | | | Stato_Oggetto | enum('nuovo','usato') | YES | | NULL | | | Id_Venditore | varchar(20) | NO | | NULL | | | Id_Categoria | varchar(30) | NO | | NULL | | +-----------------+-----------------------+------+-----+---------+----------------+ 9 rows in set (0.00 sec)
ecodice:1) Visualizzare i commenti ricevuti da un certo oggetto ordinandoli in ordine ascendente rispetto al campo Commentatore*/ SELECT COMB.Oggetto_Commentato,INSERZIONE.Titolo, COMB.Titolo,COMB.Commentatore, INSERZIONE.Scadenza FROM INSERZIONE, COMMENTO AS COMA, COMMENTO AS COMB WHERE INSERZIONE.ID_Oggetto = COMA.Oggetto_Commentato AND COMA.Id_Commento = COMB.Id_Commento ORDER BY INSERZIONE.Id_Oggetto DESC LIMIT 5;SELECT COMMENTO.Commentatore, COMMENTO.Titolo, COMMENTO.Commento FROM COMMENTO WHERE Oggetto_Commentato = 9 ORDER BY COMMENTO.Commentatore asc;
Mi chiedevo se le query che usano gli ORDER BY e LIMIT possano essere implementate in maniera migliore...oppure se si può migliorare qualcosa con diversi tipi di join da questi quà....codice:2) Visualizza i 5 ultimi oggetti inseriti nelle inserzioni che sono stati commentati e le relative informazioni dei commenti */ SELECT COMB.Oggetto_Commentato,INSERZIONE.Titolo, COMB.Titolo,COMB.Commentatore, INSERZIONE.Scadenza FROM INSERZIONE, COMMENTO AS COMA, COMMENTO AS COMB WHERE INSERZIONE.ID_Oggetto = COMA.Oggetto_Commentato AND COMA.Id_Commento = COMB.Id_Commento ORDER BY INSERZIONE.Id_Oggetto DESC LIMIT 5;
Per favore è importante...devo trovare il modo di ottimizzarle qualche altra query (oltre a quelle che ho già sistemato) altrimenti non posso consegnare il progetto.
Grazie mille
Andrea

