|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : juin 2007 Messages : 39 ![]() |
Bonjour,
J'ai créé une requete sql, mais elle me semble un peu lourde à l'exécution, je me demandais si il en existait une forme "optimisée". Cette requete sera exécutée en shell. Code :
SELECT a,b,(a/b*100) FROM (((SELECT count(*) AS a FROM drive WHERE argument = 'OK') ra), ((SELECT count(*) AS b FROM drive) rb)) |
|
|
00
|
|
|
#2 |
|
Invité(e)
Messages : n/a ![]() |
Bonjour,
Commence par bien indenter a requête !! |
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : juin 2007 Messages : 39 ![]() |
OK je vais tenter d'indenter ma requete:
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Inscription : juillet 2007 Messages : 495 ![]() |
Ca n'est pas étonnant que ce soit lourd : tu n'as pas de jointure entre tes 2 sous-requêtes ra et rb, donc tu fais un produit cartésien.
Pour être lourd, ça doit être du très lourd, même pas besoin d'avoir des tables très volumineuses, et en plus fonctionnellement ça n'a certainement aucun sens !
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche ! |
|
|
00
|
|
|
#5 | ||||
|
Invité(e)
Messages : n/a ![]() |
Le produit cartésien ne se fait que sur 2 tables d'une ligne, rien de bien méchant donc.
Pas moins lourd mais plus joli je trouve : Code :
Tu as combien de ligne dans ta table ? Quel proportion de argument = 'OK' ? Une autre idée, si ça te dérange pas d'avoir ton résultat en lignes plutôt qu'en colonne : Code :
Dernière modification par Scorpi0 ; 10/09/2008 à 15h46. |
||||
00
|
|
|
#6 | |
|
Invité régulier
![]() Inscription : juin 2007 Messages : 39 ![]() |
Dans ma table je dois avoir dans les 20 lignes.
Et la proportion d'état "OK", un maximum j'espère, sauf gros soucis technique... Citation:
|
|
|
|
00
|
|
|
#7 | ||
|
Invité(e)
Messages : n/a ![]() |
Pour remettre en lignes la requête que je t'ai postée au dessus, tu peux faire un truc de ce genre :
Code :
Au final, si ta table ne fait que 20 lignes et n'est pas destinée à en contenir plus, ta toute première requête devrait largement suffire. Tu te poses pas des questions pour optimiser des requête qui tape 20 lignes. Si tu trouves ton temps d'exécution trop lent, le problème doit venir d'ailleurs. |
||
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Si en exécutant une requête sur 20 lignes tu as déjà des soucis de perfs, le problème vient surement d'ailleurs
Tu n'utiliserais pas un site web ou excel ou autre pour voir le résultat plutôt que SQL*Plus ? |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
Un seul accès à la table suffit :
Et il faut gérer le cas où centreon.host ne contient aucune ligne. Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com