[gl-como] Chat system

Mpuppeteer mpuppetier@gmail.com
Ven 17 Apr 2015 13:57:43 CEST


Il giorno 17 aprile 2015 12:13, Gianni Carabelli <giannicarabelli@gmail.com>
ha scritto:

> On 04/17/2015 11:56 AM, Mpuppeteer wrote:
> > SELECT *
> > FROM chat
> > WHERE ( (id_user = 1) OR (id_user_to = 1) )
> > AND created_at in (
> >         SELECT MAX(created_at)
> >         FROM chat
> >         WHERE id_chatconv in (
> >                 SELECT id_chatconv
> >                 FROM userchat WHERE id_user = 1
> >         )
> >         GROUP BY id_chatconv
> > )
> > ORDER BY (created_at) DESC;
>
>
> Stai usando 2 "IN" che di solito sono il male.
> L'é il gran visir di tuci i terun!!
> https://wikis.oracle.com/pages/viewpage.action?pageId=27263381
>
> Senza indici e quando il traffico sarà alto, sarà un problema.
> Magari il traffico non l'avrai mai.. ma io molto spesso ho visto
> dbserver  andare KO per qualche query cannata.
>
> SELECT *
> FROM chat c
> JOIN userchat ON u.id_chatconv = c.id_chatconv
> WHERE ( (id_user = 1) OR (id_user_to = 1) )
> AND created_at = [boh.. questa parte non l'ho capita]
>
> e aggiungere gli indici.
>
> Oppure metti una query in più.
> Non è detto che con una query in più vai più piano.
>
> Ciao
>
> JohnnyRun
>
> --
> Mailing list info: http://lists.linux.it/listinfo/gl-como
>

Certo gli indici vanno assolutamente inseriti.
Nell'esempio li ho tralasciati perché stavo solo provando.

Non sapevo che "IN" era male... buono a sapersi... vedrò di ottimizzare il
tutto...

Comunque la query deve restituirmi la lista dell'ultimo messaggo di ogni
conversazione ( One to One ) di un utente

quindi la subquery del created_in trova la data maggiore ( ultimo messaggio
inserito) di una conversazione.... Il secondo "IN" ottimizza il tutto
trovando solo le date delle conversazioni di un utente.

Indici a parte ( che inserisco :-) ) qui se vuoi trovi come funzica:
http://pastie.org/private/idcn8uwx3xw3jueochdotq


Gianni grazie !
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/gl-como/attachments/20150417/7e6b187e/attachment.html>


Maggiori informazioni sulla lista gl-como