Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [OPTIMASATION MYSQL/PGSQL] requetes imbriquées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OPTIMASATION MYSQL/PGSQL] requetes imbriquées

n°1438459
ffluff
Challenge Everything
Posté le 07-09-2006 à 15:36:05  profilanswer
 

:hello:  
 
Voici ma table :

CREATE TABLE stats_appels
(
  id serial NOT NULL,
  cat int4 NOT NULL,
  appelant varchar(20) NOT NULL,
  date timestamp NOT NULL,
  CONSTRAINT prim_s_a_id PRIMARY KEY (id),
)


et 1 index sur appelant, 1 sur cat, et 1 sur date
 
j'ai prés de 550000 enregistrement dans cette table et je dois savoir quels est le nombre de nouveaux appelant par mois .(avec comme "seule" restriction cat=30)
 
J'ai donc fait en 'mysql':


SELECT date_format(a.date ,'%Y-%m'), COUNT(DISTINCT(a.appelant))
FROM stats_appels AS a  
WHERE a.cat =30  
AND a.appelant NOT IN (  
  SELECT b.appelant  
  FROM stats_appels AS b  
  WHERE b.cat =a.cat  
  AND MONTH( b.date ) <= MONTH( DATE_SUB( a.date, INTERVAL 1 MONTH ) )
)
AND YEAR( a.date ) = '2006'
GROUP BY MONTH( a.date );


 
et en PGSQL:


SELECT EXTRACT(MONTH FROM a.date ), COUNT(DISTINCT(a.appelant))  
FROM public.stats_appels AS a  
WHERE a.cat=30  
AND a.appelant NOT IN (  
  SELECT b.appelant  
  FROM public.stats_appels AS b  
  WHERE b.cat=30
  AND EXTRACT( MONTH FROM b.date)::integer <= (EXTRACT( MONTH FROM  a.date)::integer - 1)
)
AND EXTRACT(YEAR FROM a.date)::integer = 2006  
GROUP BY EXTRACT(MONTH FROM a.date);


 
 
$ mysql --version
mysql  Ver 14.12 Distrib 5.0.24a, for pc-linux-gnu (i486) using readline 5.1
 
La requete mets environs 5-10min suivant l'utilisation de mon pc
 
$ psql --version
psql (PostgreSQL) 8.1.4
contient le support pour l'édition de la ligne de commande
La requete n'a jamais fini sont excution j'ai toujours stop apres 10min.
 
 
Je sais que lors de l'insertion je peux checher que l'appelant est deja dans la base et rajouter un champs (first) et le mettre a vrai mais c'est pas moi le dev de l'app qui renseigne la base.
 
 
1°) Quelqu'un aurait il une idée pour optimiser tout ca ?
2°) Quelqu'un sait pourquoi pgsql est plus lent que mysql ?

mood
Publicité
Posté le 07-09-2006 à 15:36:05  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [OPTIMASATION MYSQL/PGSQL] requetes imbriquées

 

Sujets relatifs
Regrouper des requêtes SQLProblème avec un update en php/mysql
DBD::Mysql DBI CGI vs Script[MySQL] Probléme sur requete pas simple !
[mysql] trigger lors d'une insertion...Base MySql sur free et gestion de traductions sur un site web
script alternatifs pour connexion à un serveur MySQL[RESOLU]newsletter - vérifier l'installation de Mysql [RESOLU]
Partitionnement de grosses tables dans MySQL 5Mysql pagination
Plus de sujets relatifs à : [OPTIMASATION MYSQL/PGSQL] requetes imbriquées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR