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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  optimisation d'une requete sql!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimisation d'une requete sql!

n°631183
saxgard
Posté le 04-02-2004 à 15:54:44  profilanswer
 

j'aimerai savoir si il y a des limites dans le nombre de chaine de caractère que l'on peu mettre dans la condition NOT IN dans une requete.
 
 
peut on faire un truc du genre:
 

Code :
  1. select DISTINCT CODPRO from PRO where CODSOC=11 AND CODZN1='SL' AND CODPRO NOT IN ($produits_com) order by CODPRO


 
avec $produits_com aléatoire , a l'heure actuelle ca touren autour de  300 produits  
mais on peu imaginer qu'il y est bien plus de produits  par consequent la condition NOT IN serai bien plus grosse.
 
N'est-il pas preferable de ne pas mettre cette condition NOT IN et de tester ce que l'on veut une fois la requete effectué?


Message édité par saxgard le 04-02-2004 à 16:07:52
mood
Publicité
Posté le 04-02-2004 à 15:54:44  profilanswer
 

n°631206
saxgard
Posté le 04-02-2004 à 16:05:24  profilanswer
 

mon probleme c'est que je fais une requete via ODBC par le biais d'un script PHP sur une base oracle et plus particulièrement une table produit contenant plus de 250 000 enregistrement de produits (sans parler le grand nombre de champ de chaque enregistrement)
 
CODSOC est un champ indexé mais pas CODZN1
 
le problème c'est que la requete met bcp trop de temps, ca oscile entre 20s et plus d'1 minute , et par consequent pour un script php c'ets beaucoup trop long. (enfin je trouve)
 
et la j'essaye de voir comment optimiser ma requete au mieux


Message édité par saxgard le 04-02-2004 à 16:06:14
n°631217
saxgard
Posté le 04-02-2004 à 16:08:21  profilanswer
 

bon je sais qu'odbc ralenti bcp l'execution mais pour l'instant il n'y a que ca qui marche  :/

n°631239
gizmo
Posté le 04-02-2004 à 16:21:20  profilanswer
 

question con: comment obtiens-tu la valeur du NOT IN?

n°631242
saxgard
Posté le 04-02-2004 à 16:24:41  profilanswer
 

gizmo a écrit :

question con: comment obtiens-tu la valeur du NOT IN?


 
en faite je fais une requete sur uen autre base de données pour connaitre l'exsitant  
 
et ensuite je fais une requete sur la base oracle pour recuperer ce que j'ai pas  
 
en gros je rempli la variable comme ca :

Code :
  1. $produits_com=$produits_com.","."'".$row_produits_com->products_name."'";


 
$row_produits_com->products_name <-- ce sont les resultat de la requete sur la 1er base

n°631281
gizmo
Posté le 04-02-2004 à 16:49:41  profilanswer
 

ok, bah dans ce cas, je vois mal comment tu pourrais optimiser le bazard. Un not in sur un grand tableau, c'est foireux dès le départ, mais si tu ne sais pas récupérer les données autrement dans une table de la même db, ca me semble compromis.

n°631295
MagicBuzz
Posté le 04-02-2004 à 17:08:34  profilanswer
 

1) NOT IN c'est maxi lent c'est très mal.
2) Oui, cette chaîne est limitée en taille.
3) Par contre, un NOT IN (select * ...) n'est pas limité en taille (mais tu reviens dans deux ou trois heures)


Message édité par MagicBuzz le 04-02-2004 à 17:08:43
n°631301
saxgard
Posté le 04-02-2004 à 17:14:08  profilanswer
 

MagicBuzz a écrit :

1) NOT IN c'est maxi lent c'est très mal.
2) Oui, cette chaîne est limitée en taille.
3) Par contre, un NOT IN (select * ...) n'est pas limité en taille (mais tu reviens dans deux ou trois heures)


 
par consequent vaut mieux faire la meme requete sans faire de contrainte avce un NOT IN
 
et ensuite faire une petite boucle pour controler vraiment ce que l'on veut récuperer?

n°631308
MagicBuzz
Posté le 04-02-2004 à 17:18:15  profilanswer
 

Non, faut réfléchir 5 minutes et réécrire la requête pour ne pas avoir besoin du not in.
 
Ta clause NOT IN est crée à partir de quoi ?


Message édité par MagicBuzz le 04-02-2004 à 17:20:23
n°631309
MagicBuzz
Posté le 04-02-2004 à 17:19:18  profilanswer
 

saxgard > j'y crois pas ! tu bosses sur GENERIX ? :D
 
lol, t'es où ? moi je suis chez GEMSE. A priori, t'y es pas, parceque tu bosses en mode multi-société :) (codsoc=11 et non pas 0)
 
Me suis bouffé 3 heures d'integrateur ce matin, j'en ai mal à la tête :D


Message édité par MagicBuzz le 04-02-2004 à 17:21:58
mood
Publicité
Posté le 04-02-2004 à 17:19:18  profilanswer
 

n°631319
saxgard
Posté le 04-02-2004 à 17:28:31  profilanswer
 

MagicBuzz a écrit :

saxgard > j'y crois pas ! tu bosses sur GENERIX ? :D
 
lol, t'es où ? moi je suis chez GEMSE. A priori, t'y es pas, parceque tu bosses en mode multi-société :) (codsoc=11 et non pas 0)
 
Me suis bouffé 3 heures d'integrateur ce matin, j'en ai mal à la tête :D


 
lol ouais je bosse sur Generix  au groupe grand sud ;)
 
et on pe pas dire que pour l'instant je sois bien fanne de Generix  , mais bon cela dit je connais que ca  lol

n°631321
saxgard
Posté le 04-02-2004 à 17:30:25  profilanswer
 

bon nous reprendrons cette conversation demainje dois y aller ;)

n°631326
MagicBuzz
Posté le 04-02-2004 à 17:33:04  profilanswer
 

ok ;)
 
PS: Generix, c'est une grosse daube infâme :D
 
M'enfin ça marchouille, et l'avantage c'est qu'on peut accéder librement à la base, du coup c'est très ouvert, c'est le seul vrai avantage...


Message édité par MagicBuzz le 04-02-2004 à 17:33:14
n°631898
saxgard
Posté le 05-02-2004 à 09:45:01  profilanswer
 

MagicBuzz a écrit :

ok ;)
 
PS: Generix, c'est une grosse daube infâme :D
 
M'enfin ça marchouille, et l'avantage c'est qu'on peut accéder librement à la base, du coup c'est très ouvert, c'est le seul vrai avantage...


 
nous on a quand meme pas mal de souci avec generix mais bon ;)

n°631981
MagicBuzz
Posté le 05-02-2004 à 10:59:25  profilanswer
 

n'hésite pas à me poser des questions, ça fait 5 ans que j'en bouffe quotidiennement :D

n°632123
saxgard
Posté le 05-02-2004 à 13:28:08  profilanswer
 

MagicBuzz a écrit :

n'hésite pas à me poser des questions, ça fait 5 ans que j'en bouffe quotidiennement :D


 
woww cool merci pour ta proposition j'en prend bonne note  ;)
 
bin pour l'instant moi je fais juste des requetes sur la base oracle mais je ne touche pas vraiment a l'application generix
 
j'ai juste fais un intranet qui permet de referencer les produits et de creer des fichiers pres a etre integrer dans generix.
 
sinon bin la je suis entrain de rajouter des modules de commandes en ligne sur l'extranet et j'ai encore besoin de faire des requetes sur la base de generix  ;)
d'ou mes questions d'optimisations  
 
mais si j'ai des questions j'hesiterai pas  
puis toi de meme n'hesite pas  ;) (ok moi ca fais que 5 mois que je travail la  , mais bon on sait jamais)
 
 


Message édité par saxgard le 05-02-2004 à 13:30:27
n°632157
MagicBuzz
Posté le 05-02-2004 à 13:53:01  profilanswer
 

Moi non plus j'ai jamais touché à l'appli elle-même. De toute façon, tu peux pas, c'est la boîte générix qui a les sources et t'as pas le droit d'y toucher comme ça...
 
Ahhh, l'intégrateur, quelle joie :D

n°632166
MagicBuzz
Posté le 05-02-2004 à 13:59:22  profilanswer
 

Moi si tu veux, je suis en train de me faire chier à faire une MID (Marketing Information Database)
 
C'est pas relou du tout à faire :D
 
http://perso.wanadoo.fr/magicbuzz/mid.png

n°632190
saxgard
Posté le 05-02-2004 à 14:15:33  profilanswer
 

MagicBuzz a écrit :

Moi si tu veux, je suis en train de me faire chier à faire une MID (Marketing Information Database)
 
C'est pas relou du tout à faire :D
 
http://perso.wanadoo.fr/magicbuzz/mid.png


 
oh bin ca doit etre sympas ;)
 
ma question va etre surement débile mais tu fais ca en quoi?
c'ets une appli web?  
 

n°632219
MagicBuzz
Posté le 05-02-2004 à 14:39:52  profilanswer
 

asp

n°632229
saxgard
Posté le 05-02-2004 à 14:59:15  profilanswer
 


 
ok bin moi j'ai fais pendnat 1 an de l'asp je m'attaque a du php depuis 5 mois

n°632235
MagicBuzz
Posté le 05-02-2004 à 15:06:23  profilanswer
 

hérétique :o

n°632245
saxgard
Posté le 05-02-2004 à 15:15:53  profilanswer
 


 :(

n°632447
MagicBuzz
Posté le 05-02-2004 à 17:21:39  profilanswer
 

groumpf.
 
- tiens, tu peux vérifier que sur le web et generix y'a bien les mêmes adresses pour ce client ?
- ok, pas de problème, je regarde ça tout de suite...
 
et là, j'attends, j'attends... 10 minutes plus tard, la page dans le manager du site s'affiche : le client a 193 adresses...
 
z'êtes sûr qu'il faut vérifier là ? nan parceque voilà quoi...

n°632448
MagicBuzz
Posté le 05-02-2004 à 17:22:25  profilanswer
 

lol, j'aime bien y'a la moitiée des adresses du client qui sont :
 
"ATTENTION DE BIEN LIVRER A L'ADRESSE CI-DESSUS ET PAS A UN AUTRE CLIENT COMME AU MOIS DE DECEMBRE" :lol:

mood
Publicité
Posté le   profilanswer
 


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

  optimisation d'une requete sql!

 

Sujets relatifs
requete sql qui prend le moins de temps ?Requête SQL pour MySql
[SQL] Optimisation d'une requeteoptimisation de requete
[SQL] optimisation de requête....[SQL] requete (optimisation toute simple help!!!!)
[mysql]optimisation d'un requete[MySQL]optimisation requete
Optimisation d'une requête. Laquelle choisiriez-vous ?[MYSQL PHP] Requete ne renvoyant qu'1 champ, optimisation du code.
Plus de sujets relatifs à : optimisation d'une requete sql!


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