[gl-como] Chat system

Gianni Carabelli giannicarabelli@gmail.com
Ven 17 Apr 2015 12:13:52 CEST


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


Maggiori informazioni sulla lista gl-como