Pb requete SQL
stef
-
stef -
stef -
bonjour, j'ai une requete du type :
SELECT * FROM table WHERE etat=1 OR etat=2
Cette requette mets ENORMEMENT de temps à s'executer.(10secondes)
Alors que si je fait
SELECT * FROM table WHERE etat=1
SELECT * FROM table WHERE etat=2
chaque requete met 0.1 seconde....
quelqu'un a deja eu ce genre de probleme??
SELECT * FROM table WHERE etat=1 OR etat=2
Cette requette mets ENORMEMENT de temps à s'executer.(10secondes)
Alors que si je fait
SELECT * FROM table WHERE etat=1
SELECT * FROM table WHERE etat=2
chaque requete met 0.1 seconde....
quelqu'un a deja eu ce genre de probleme??
A voir également:
- Pb requete SQL
- Logiciel sql - Télécharger - Bases de données
- Sql (+) - Forum Programmation
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Cherche des haricot vendez les moi ✓ - Forum DS
- Sql lister les tables ✓ - Forum Programmation
3 réponses
ce n'est pas un probleme (selon le SGBD)
sur certains SGBD le OR et lancé tel quel et donc sur 100 enregistrement il en traite 100^100 pour en extraire 4 repondant à la requette
au lieu de 2*100 pour avoir les 4 repondant à la requette ...
ce n'est pas choquant... c'est juste ce qui differencie les SGBD optimisé pour les requettes complexes peu nombreuses et ceux qui sont plustot optimisé pour faire beaucoup de requettes ... ou envore ceux qui sont entre les deux...
sur certains SGBD le OR et lancé tel quel et donc sur 100 enregistrement il en traite 100^100 pour en extraire 4 repondant à la requette
au lieu de 2*100 pour avoir les 4 repondant à la requette ...
ce n'est pas choquant... c'est juste ce qui differencie les SGBD optimisé pour les requettes complexes peu nombreuses et ceux qui sont plustot optimisé pour faire beaucoup de requettes ... ou envore ceux qui sont entre les deux...
oui mais il y a aussi le probleme de la mêmoire pour certains ils copies tout dans la memoire (...* from) puis execute dans la mémoire l'analyse (where ......) donc en cas de faible mémoire par rapport au nombre d'entrée c'est très lent et c'est normal ...
100 entrées de 1000 informations c'est deja 100000 objets à 1ko l'objet ça fait deja 102400000 octets sans compter les traitements l'OS et les applications qui tournent elles aussi dans la memoire...
bref... en dessous de 512Mo avec des requettes même peu complexes faut pas s'etonner de ralentissements....à moins d'avoir une becanne surpuissante qui compense avec des debits d'IO enormes avec la mémoire...
mais je pencherai malgré tous pour un mauvais choix du SGBD par rapport au type de requettes attendu...genre un SGBD optimisé pour le grand nombre de petites requettes et pas pour les requettes complexes ou conditionnelles.
mais dans tous les cas ça fonctionnera c'est juste long...
100 entrées de 1000 informations c'est deja 100000 objets à 1ko l'objet ça fait deja 102400000 octets sans compter les traitements l'OS et les applications qui tournent elles aussi dans la memoire...
bref... en dessous de 512Mo avec des requettes même peu complexes faut pas s'etonner de ralentissements....à moins d'avoir une becanne surpuissante qui compense avec des debits d'IO enormes avec la mémoire...
mais je pencherai malgré tous pour un mauvais choix du SGBD par rapport au type de requettes attendu...genre un SGBD optimisé pour le grand nombre de petites requettes et pas pour les requettes complexes ou conditionnelles.
mais dans tous les cas ça fonctionnera c'est juste long...