PDA

View Full Version : [MySql] Vista lentissima...si puņ ottimizzare in qualche modo?


Trigger2009
23-06-2009, 11:18
Ciao,
allora ho creato una vista ma č veramente lentissima: ci mette la bellezza di 4 minuti e 26 secondi :eek:

Praticamente ho 2 tabelle:



mysql> describe FEEDBACKVENDITORE;
+---------------+--------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------------------------------+------+-----+---------+-------+
| Id_Oggetto | int(11) | NO | PRI | NULL | |
| Id_Venditore | varchar(20) | NO | | NULL | |
| Id_Acquirente | varchar(20) | NO | | NULL | |
| Feedback | enum('Positivo','Neutro','Negativo') | NO | | NULL | |
| Commento | varchar(255) | YES | | NULL | |
+---------------+--------------------------------------+------+-----+---------+-------+

mysql> describe FEEDBACKACQUIRENTE;
+---------------+--------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------------------------------+------+-----+---------+-------+
| Id_Oggetto | int(11) | NO | PRI | NULL | |
| Id_Acquirente | varchar(20) | NO | | NULL | |
| Id_Venditore | varchar(20) | NO | | NULL | |
| Feedback | enum('Positivo','Neutro','Negativo') | NO | | NULL | |
| Commento | varchar(255) | YES | | NULL | |
+---------------+--------------------------------------+------+-----+---------+-------+



Le voglio mettere insieme per avere una tabella virtuale per tenere d'occhio la situazione feedback e per questo creo la seguente vista:


CREATE VIEW FeedbackRilasciati AS
SELECT feedbackVenditore.Id_Venditore, feedbackAcquirente.Id_Acquirente, feedbackVenditore.commento AS commentovenditore,
feedbackAcquirente.commento AS commentoacquirente, feedbackVenditore.Id_Oggetto
FROM feedbackvenditore JOIN feedbackacquirente
ON feedbackvenditore.Id_Oggetto = feedbackacquirente.Id_Oggetto
GROUP BY Id_Oggetto;


e quando la eseguo ci mette un botto di tempo a darmi il risultato:


mysql> select * from FeedbackRilasciati limit 5;
+---------------+------------------+--------------------------------+--------------------------------+------------+
| Id_Venditore | Id_Acquirente | commentovenditore | commentoacquirente | Id_Oggetto |
+---------------+------------------+--------------------------------+--------------------------------+------------+
| .[| | Io49RMBK0hTDziO? | COMME1TO KS5Z21 1VF7AN I3P6G57 | COMME8TO CQ1U8G 71I7J7C X5Y0K1 | 1 |
| <4d8 | .CCl-_t6)tT'"X | COMME6TO YG7C17 3WT4BM F7Y6V63 | COMME5TO FB4G8R 76T8R1P Q1R2R5 | 2 |
| rJ<pS"t | nTc | COMME3TO YA4F11 4GU8KA D2I0K72 | COMME8TO QJ5C6Z 36R3O7Y R7I2G0 | 3 |
| cB%:MA YA7`mA | $=gkeQ+o#d|[Q|[7 | COMME5TO LQ2K70 1ZK2NI O0O0V21 | COMME5TO AN6H0O 10F5D9C S6F9J3 | 4 |
| ` | `:' | COMME3TO TO3P50 2IV9HM J9T5Q44 | COMME1TO LD0J0C 82Q4U8W K8D9P6 | 5 |
+---------------+------------------+--------------------------------+--------------------------------+------------+
5 rows in set (4 min 26.79 sec)


La cosa che rallenta molto č l'ORDER BY perchč deve ordinare ed č un'operazione pesantina...avete qualche idea per ottimizzarla e migliorarne le prestazioni senza dover togliere l'ORDER BY (magari qualche indice? oppure cambiare la forma o l'algoritmo della vista?)

TNX