|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 32 ![]() |
Bonjour,
Je sollicite votre aide pour un problème des plus étranges.... Sur notre environnement de développement (SQLSERVER2008), nous utilisons une procédure stockés contenant des requêtes imbriquées et des tables temporaires (assez complexe) le tout trié sur une colonne précise (date). pas de souci, que ce soit en exécutant la proc ou bien en la visualisant sur l'application web, ca fonctionne. Nous avons livré cette même proc sur l'environnement de pré-prodcution (SQLServer2008 R2) et là ca ne fonctionne pas ! il ya une sorte de tri puisque que nous pouvons voir des paquets de même date ensemble mais pas sur la totalité des données .... Nous avons vérifié que nous étions sur le bon environnement, que la proc a bien été compilé, que c'était la bonne proc sur l'environnement. J'ai copié les donénes de pré-prod en dev pour être iso entre les environnements... Bref, je suis perdue.... Avez-vous déjà rencontré un problème similaire? avez-vous des idée de piste ? Pour le moment, j'ai demandé l'upgrade de la version du serveur de dev mais ca me parait étrange que ce soit ca... Merci d'avance pour vos retours Bonne fin de journée Maryline |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Quelle est la clause ORDER BY ? S'il n'y pas de clause ORDER BY, c'est "presque" normal ... En SQL, il n'y a pas d'ordre : ni dans les colonnes, ni dans les lignes, c'est à dire que l'ordre des colonnes n'influe pas sur le résultat de la requête, et l'ordre des lignes non plus ... sauf dans le cas d'un TOP, qui n'est pas (lui non plus) un opérateur ensembliste En conséquence, SQL Server, de l'une à l'autre table, peut choisir un index différent, suivant le volume de données et/ou la "fraîcheur" des statistiques de distribution des valeurs dans la colonne, ou la valeur des paramètres (mais pour ce dernier élément, ce n'est apparemment pas votre cas). Dès lors le résultat de votre requête sera "ordonné" suivant cet index. Pouvez vous donner la requête ainsi que le script de création des tables utilisées par la requête, afin que nous voyions les index ? @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
10
|
|
|
#3 |
![]() ![]() Yves Développeur informatique Inscription : janvier 2007 Messages : 3 878 ![]() |
Et je rajouterai pour la culture de tous, que, sans clause Order by, une même requete sur la même table du même serveur peut renvoyer un tri différent à plusieurs jours d’intervalle.
__________________
Sevyc64 --- Le partage est notre force NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 32 ![]() |
Bonjour,
tout d'abord merci pour vos réponses. Sur la requête, il y a une clause order by sur 2 colonnes (colonne erreur et colonne date de livraison) un index spécifique a été mis en place sur 3 colonnes (colonnes appartenant à la clé) et les 2 colonnes de l'order by n'appartiennent pas à cet index. Le même index a été mis en place sur les 2 environnements. est-ce que le comportement peut etre différents ? par contre si l'index est d'abord mis en place puis l'order by alors je comprends mieux le "pseudo tri" que je vois dans la table. De plus, sur l'environnement de pré-production, ce n'est jamais le même affichage comme si le order by n'était pris en compte... Par contre, j'ai récupéré le plan d'execution des 2 procs. il existe quelques différences mais j'ai pas l'impression que ce soit ça le problème ... Merci pour la piste de l'index, je vais creuser par là ... ;-) Maryline |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Il faudrait votre code complet, car un ODER BY n'est pas forcément respecté :
1) jamais dans une vue 2) probablement pas avec une clause TOP A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#6 | |
|
Membre Expert
![]() |
Bonjour,
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com