Besoin d'aide pour choisir index

Résolu
cs_GrunK Messages postés 7 Date d'inscription dimanche 7 mars 2004 Statut Membre Dernière intervention 26 février 2014 - 26 févr. 2014 à 15:27
nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 4 mars 2014 à 16:34
Bonjour,

Une table contenant moult champs et moult enregistrement, je souhaite rajouter un index.

La recherche utilisateur porte sur 3 champs (type, n°,nom), le résultat doit être trié par date (ce champs existe dans la table).

Si je construit ma requete ainsi :
select type,n°,nom from ma_table where type = saisie and etc... order by date

l'index suivant sera-til utilisé : index on (date + type + n° +nom) ?

GrunK
A voir également:

5 réponses

nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 16
27 févr. 2014 à 09:19
salut

pas nécessairement, l'optimiseur foire son choix d'index avec l'order by (j'ai eu souvent le cas).

Du coup ou m'a donné une astuce : forcer l'indexe . En mySQL c'est FORCE INDEX, mais en SQL la synthaxe serai :
WITH (INDEX(mon_indexe))
( http://blog.sqlauthority.com/2009/02/07/sql-server-introduction-to-force-index-query-hints-index-hint/)

Du coup tu oblige l'optimiseur à utiliser ton index.

naga
0
Merci pour ta réponse.
Très instructif.

Malheureusement je ne suis pas sur MySQL, mais sur un vieux sgbd type fichiers ou il n'existe pas d'équivalent à FORCE INDEX.
0
jordane45 Messages postés 37539 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023 341
3 mars 2014 à 14:57
je ne suis pas sur MySQL, mais sur un vieux sgbd type fichiers
Et lequel ?
( Chose que tu aurais surement du indiquer au moment où tu as posé ta question..... non ??....)
0
nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 16
3 mars 2014 à 15:53
ah ok, tu as posté dans SQL, c'est pour ca que j'avais mis
WITH (INDEX(mon_indexe))
.

même question que jordane donc^^
0
peu de chance que vous connaissiez CRITERIA ...

En fait ma question est surtout d'un point de vue théorique, car je n'ai même pas la possibilité de vérifier quand si index est utilisé ou non (comme dans MySQL).
0
nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 16
3 mars 2014 à 16:11
en effet je ne connais pas, mais donc ton message n'est pas à sa place : tu ne peux pas faire l'amalgame du comportement de l'optimiseur d'une sgbd avec une autre, ca reviendrai à dire que quelque soit la personne qui développe, il a la même logique et la même manière d'interpréter des données .
0
c'est juste.

N'étant pas un spécialiste de l'optimisation de BDD, je me posais juste la question si, en théorie, ma requête utiliserai l'index ?

En fait je souhaite savoir une clause where sur 3 champs + un order by sur un 4eme utiliserai un index composite de ces 4 champs ?
0
nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 16
3 mars 2014 à 16:37
je dirai que la solution la plus simple serai de récupérer les résultats non triés dans une sous requête. Au moins le tri se fera après récupération des résultats, la requête de base devrai utiliser l'index .
0
Je ne peut pas récup le résultat de ma requête dans une table tempo / tableau / curseur pour la trier ensuite.
Dans Criteria, les enregistrements correspondants à une requête sont marqués (flag), il faut ensuite parcourir le fichier dans l'ordre croissant.
C'est pour cela que l'utilisation d'un index m'aiderai bien.
0
nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 16
4 mars 2014 à 08:01
la table temporaire reste une table, si tu créé et supprime ta table à la volée le fonctionnement sera globalement le même (et ca te permet d'utiliser l'index pour alimenter cette table qui pourra être indexé par sa date).

à part ca je n'ai pas de solution à te proposer, le fonctionnement de ta sgbd semble assez proche de hyperion (j'ai taffé dessus du coup) et pareil c'était très limité (avec quelques "blagues", où les éléments filtrant de ta requête vont parfois masquer des colonnes de résultat -_-').
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je vais utiliser cet index, je verrai à l'usage si les temps de réponse sont satisfaisant.

Merci de tes réponses.

A+
0
nagaD.scar Messages postés 4280 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 16
4 mars 2014 à 16:34
pas de soucis, dsl de ne pas avoir pu plus t'aider ^^
bondev

naga
0