Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#76 Re : Optimisation » Optimisation Basse de Données » 17/03/2014 18:33:59
116M de lignes et 2 ou 3 jours pour avoir les résultats ???
Est-il possible d'avoir plus d'infos :
- un explain de la requête (on voit la analyse un autre jour)
- type de serveur (CPU / RAM / ...)
- les éléments de configuration modifiés : select name, setting from pg_settings where source !='default' and source='configuration file';
#77 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 14/03/2014 18:19:55
OK ! ![]()
donc mon jeux de test :
create table the_range(id_the_range integer,dt_deb date, dt_fin date);
insert into the_range values(1,'2014-02-21', '2014-02-25');
insert into the_range values(2,'2014-02-20', '2014-02-22');
insert into the_range values(3,'2014-02-26', '2014-02-27');la requête :
SELECT
t.id_the_range,
dt_deb,
dt_fin,
(
SELECT
count(*)::text || ' : ' || coalesce(string_agg(id_the_range::text,','),'NA')
FROM
the_range
WHERE
t.id_the_range != id_the_range AND
(
(t.dt_deb>=dt_deb AND t.dt_deb<=dt_fin) OR
(t.dt_deb<=dt_deb AND t.dt_fin>=dt_deb)
)
) as count_and_liste_id
FROM
the_range t
ORDER BY 1résultat :
id_the_range | dt_deb | dt_fin | count_and_liste_id
--------------+------------+------------+--------------------
1 | 2014-02-21 | 2014-02-25 | 1 : 2
2 | 2014-02-20 | 2014-02-22 | 1 : 1
3 | 2014-02-26 | 2014-02-27 | 0 : NA
(3 rows)count_and_liste_id -> count = 1 et 2 est l'id qui le chevauche
vu de loin les 2 clause (t.dt_deb>=dt_deb AND t.dt_deb<=dt_fin) OR (t.dt_deb<=dt_deb AND t.dt_fin>=dt_deb) me semblent couvrir tous les cas, mais je peux me tromper !
#78 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 14/03/2014 17:56:21
de ce que je vois :
date_debut | date_fin
-----------------------------
2014-02-21 | 2014-02-25
2014-02-20 | 2014-02-22
2014-02-26 | 2014-02-27la premiere se chevauche avec la seconde et la dernière avec personne.
donc :
date_debut | date_fin
-----------------------------
2014-02-21 | 2014-02-25 -> 1
2014-02-20 | 2014-02-22 -> 1
2014-02-26 | 2014-02-27 -> 0c'est ça ?
#79 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 14/03/2014 16:33:01
désolé, mais je ne comprends pas ![]()
#80 Re : Général » arrondi superieur » 14/03/2014 16:29:57
à mon avis, vous allez devoir passer par un procédure stockée maison ...
#81 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 13/03/2014 17:17:28
Il reste juste à remplacer ???NOM_DE_LA_TABLE¿¿¿ par le nom de votre table
SELECT
DATE_TRUNC('hour', new_date), -- date de début
DATE_TRUNC('hour', new_date + INTERVAL '1 hours'), -- date de fin
SUM(raw_value)
FROM
(SELECT
CASE WHEN
DATE_TRUNC('hour', horodate) = horodate THEN horodate - INTERVAL '1 minutes'
ELSE
horodate
END AS new_date,
raw_value
FROM
???NOM_DE_LA_TABLE¿¿¿) AS foo
GROUP BY
1,2
ORDER BY
1;#82 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 13/03/2014 16:15:57
Les données :
test=# select * from pluie;
la_date | val
---------------------+------
2000-01-01 09:00:00 | 0.10
2000-01-01 09:30:00 | 0.20
2000-01-01 09:42:00 | 0.50
2000-01-01 09:54:00 | 0.20
2000-01-01 10:00:00 | 1.00
(5 rows)La requête :
test=# select date_trunc('hour', new_date), date_trunc('hour', new_date + interval '1 hours'), sum(val) from (select case when date_trunc('hour', la_date) = la_date THEN la_date - interval '1 minutes' ELSE la_date END as new_date, val from pluie) as foo group by 1,2 order by 1;
date_trunc | date_trunc | sum
---------------------+---------------------+------
2000-01-01 08:00:00 | 2000-01-01 09:00:00 | 0.10
2000-01-01 09:00:00 | 2000-01-01 10:00:00 | 1.90
(2 rows)C'est ça ?
#83 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 12/03/2014 16:02:23
Pour avoir date début / date fin :
select date_trunc('hour', la_colonne_avec_le_timestamp), date_trunc('hour', la_colonne_avec_le_timestamp) + interval '1 hours', sum(la_colonne_pluie) from votre_table group by 1,2 order by 1;#84 Re : PL/pgSQL » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 12/03/2014 14:44:25
bonjour,
double post ?
double réponse ![]()
select date_trunc('hour', la_colonne_avec_le_timestamp), sum(la_colonne_pluie) from votre_table group by 1 order by 1;#85 Re : Général » fonction SQL (avec timestamp) pour sommer des quantités de pluies. » 11/03/2014 18:53:28
Bonjour,
Votre question n'est pas au bon endroit, mais je ne suis pas modérateur ![]()
Sinon :
select date_trunc('hour', la_colonne_avec_le_timestamp), sum(la_colonne_pluie) from votre_table group by 1 order by 1;#86 Re : Site PostgreSQL.fr » postgresql Utilisation des index composés et EXPLAIN » 11/02/2014 13:22:07
En gardant votre UNIQUE index (fk1,val1) et en ajoutant une clause WHERE sur fk1 = 1 vous avez un fonctionnement assez proche :
Index sur val1 :
explain analyse SELECT * FROM tt WHERE val1 = '100' ;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------
Index Scan using idx_tt2 on tt (cost=0.55..4.57 rows=1 width=109) (actual time=0.028..0.028 rows=1 loops=1)
Index Cond: (val1 = '100'::bpchar)
Planning time: 0.074 ms
Total runtime: 0.050 msIndex unique sur fk1 + val1 :
explain analyse SELECT * FROM tt WHERE val1 = '100' and fk1=1;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------
Index Scan using idx_tt on tt (cost=0.55..4.57 rows=1 width=109) (actual time=0.033..0.034 rows=1 loops=1)
Index Cond: ((fk1 = 1) AND (val1 = '100'::bpchar))
Planning time: 0.098 ms
Total runtime: 0.058 ms
(4 rows)Je ne dis pas que c'est ce qui est le plus propre, mais ça répond à la première question (1) comme l'index composé n'a que des 1 dans sont premier champ peut il etre utilisé ?)
#87 Re : Site PostgreSQL.fr » postgresql Utilisation des index composés et EXPLAIN » 10/02/2014 18:16:55
Bonjour,
Pour que PostgreSQL utilise votre index sans avoir à en re-créer un, il suffit de faire un where champ3 = ?? and champ2 = 1
#88 Re : Autres langages » Installation plsh » 10/02/2014 15:07:09
Bonjour,
je n'ai jamais utilisé ces langages dans PG.
Pour PLR : http://www.joeconway.com/plr/ + http://www.joeconway.com/plr/doc/plr-install.html
La dernière version semble compatible avec la 9.3
Pour PLSH : https://github.com/petere/plsh
"You need to have PostgreSQL 8.3 or later ..." donc ça doit être OK
#89 Re : Réplication » Créer un retard dans la réplication » 27/01/2014 10:34:03
ou attendre la 9.4
: http://michael.otacoo.com/postgresql-2/ … -standbys/
#90 Re : Sécurité » Comprendre les droits » 23/01/2014 12:28:14
En sus, PG n'offre pas non plus de déclencheurs DDL (se lançant sur un ordre CREATE ALTER ou DROP) contrairement à Oracle ou SQL Server, ce qui aurait permis d'attribuer ces privilèges au moment de la création des objets !
#91 Re : Réplication » Bug réplication » 05/12/2013 17:16:06
les mises à jour sont disponibles : http://www.postgresql.org/message-id/CA … .gmail.com
#92 Re : Installation » install pgmodeler » 27/11/2013 17:15:57
et en ajoutant cette ligne dans start-pgmodeler.sh (en validant le chemin) :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/bernard/Qt5.1.1/5.1.1/gcc_64/lib#93 Re : Installation » install pgmodeler » 26/11/2013 10:19:00
j'ai la même erreur si je ne charge pas certaines variables environnement.
mais tout fonctionne avec après un "source pgmodeler.vars".
Voila le contenu de mon fichier pgmodeler.vars (vous avez juste à modifier la valeur de PGMODELER_ROOT) :
#/bin/bash
# If you have root access you can rename this file to pgmodeler.sh and put it on
# /etc/profile.d (if you system supports this technique).
# If you do not have root access you can change this file and install it
# as a .bashrc or .bash_profile.
# Specify here the full path to the pgmodeler's root directory
export PGMODELER_ROOT="/home/pri/pgmodeler"
export PGMODELER_CONF_DIR="$PGMODELER_ROOT/conf"
export PGMODELER_SCHEMAS_DIR="$PGMODELER_ROOT/schemas"
export PGMODELER_LANG_DIR="$PGMODELER_ROOT/lang"
export PGMODELER_TMP_DIR="$PGMODELER_ROOT/tmp"
export PGMODELER_PLUGINS_DIR="$PGMODELER_ROOT/plugins"
export PGMODELER_CHANDLER_PATH="$PGMODELER_ROOT/pgmodeler-ch"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$PGMODELER_ROOT"
export PATH=$PATH:$PGMODELER_ROOTSur le WIKI, ils conseillent de créer un fichier SH qui lance pgmodeler. Au final le principe est le même :
http://www.pgmodeler.com.br/wiki/doku.p … y_packages
#94 Re : Installation » install pgmodeler » 25/11/2013 10:52:19
Bonjour,
Dans le répertoire de pgmodeler, vous devez avoir un fichier à configurer -> pgmodeler.vars
Quand tout est configuré, vous n'avez plus qu'à prendre en compte les variables de ce fichier (en console) :
arthurr:~/pgmodeler$ source pgmodeler.varspuis à exécuter le binaire :
arthurr:~/pgmodeler$ ./pgmodeler#95 Réplication » Bug réplication » 21/11/2013 19:55:10
- arthurr
- Réponses : 1
Bonsoir,
Pour tous les DBA : je viens de lire : http://wiki.postgresql.org/wiki/Nov2013ReplicationIssue
Préparez vous à mettre à jours vos PostgreSQL si vous avec des hot-standby ...
Ici tous nos serveurs sont en 9.2.5 ou 9.3.1, je ne sais pas si nous sommes touchés mais je vais surveiller !
#96 Re : Général » smallint ?? » 18/11/2013 18:47:52
Je l'utilise plus par réflexe que par utilité : si je sais que la donnée à stocker n'a pas besoin de stocker de grande valeur.
A noter :
- il faut parfois caster explicitement dans certaines requêtes
- il semble que le gains en place disque soit dépendant des colonnes adjacentes à la colonne (http://postgresql.1045698.n5.nabble.com … 17850.html)
#97 Re : Général » smallint ?? » 18/11/2013 16:20:14
la taille de stockage.
un smallint = 2 octets
un integer = 4 octets
un bigint = 8 octets
#98 Re : Général » [RESOLU] Requête avec count() dans plusieurs tables » 06/11/2013 14:57:43
Si vous avez plusieurs ventouses (id 1 et id 2) pour une vanne (id 1), la vanne (id 1) va être compté 2 fois dans le count(v.id).
Avec le distinct, elle ne va être compté qu'une seule fois.
#99 Re : Général » [RESOLU] Requête avec count() dans plusieurs tables » 06/11/2013 12:07:24
bonjour,
je ne connais pas assez bien votre base, mais un DISTINCT dans le count est peut être suffisant :
SELECT
a.insee AS commune,
count(distinct b.gid) AS nb_vanne,
count(distinct c.gid) AS nb_ventouse
FROM commune a
LEFT JOIN vanne b ON a.insee = b.insee
LEFT JOIN ventouse c ON a.insee = c.insee
WHERE a.insee = '86000'
GROUP BY a.insee ;#100 Re : Général » [RESOLU] Ajouter et remplir une colonne dans la même requête » 05/11/2013 15:52:46
Bonjour,
vous parlez de vue, mais dans la première requête, vous essayez d'ajouter une colonne à votre table (la syntaxe est fausse quand même).
concernant votre 2ème requête, je n'ai aucune idée de ce que vous avez essayer de faire. ![]()
pour créer une vue toto avec une nouvelle colonne nommée colonne3 qui prend la valeur "yes" (champ texte) :
create view toto as (select *,'yes'::text as colonne3 from votre_table);La doc sur les vues : http://docs.postgresql.fr/9.3/sql-createview.html