Index pas pris en compte???

gperuch Messages postés 40 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 2 février 2012 - 27 mars 2009 à 10:45
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 10 avril 2009 à 16:43
pourquoi :

SELECT Count('')
FROM TableA A
INNER JOIN TableB B
    ON A.champ1 = B.champ1
WHERE B.champIndexé = '39990020750087'

j'ai  21 lectures logiques

et

declare @P1 varchar(20)
set @P1='39990020750087'

SELECT Count('')

FROM TableA A

INNER JOIN TableB B

    ON A.champ1 = B.champ1

WHERE B.champIndexé = @P1

j'ai 10000 lectures logiques

pour info B.champIndexé est un varchar(20)

greg

3 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
8 avril 2009 à 17:13
Bonjour

à premiere vue, je dirai que comme tu declare P1 comme varchar, et que ta colonne indéxée doit etre de type numérique
lors de ta clause WHERE de ta deuxieme requete ci dessus, il CAST non pas ton P1 en tant que numerique, mais ton champs indexé en tant que VARCHAR. il cast donc TOUT des enregistrement, et du coup ne peut plus se serir de l'index.

je ne sais pas si j'ai été clair, et je ne suis meme pas sur de ma réponse, mais c'est à vérifier (essaie de declarer P1 du meme type que ta colonne 'champIndexé ')

tiens nous au courant
0
gperuch Messages postés 40 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 2 février 2012 1
10 avril 2009 à 11:07
Merci d'avoir proposer une piste... pertinente de plus,
Mais ma derrière phrase précise bien que B.champIndexé est un varchar(20).
De mon coté j'ai un peu avancé:
   Ma requete est sous sql 2000, et le j'ai remonter la  base sous 2005 pour voir , et je n'ai plus le Probleme.
  Donc peut etre un bug de 2000???
A suivre

greg
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
10 avril 2009 à 16:43
au temps pour moi, je n'avais pas porté attention à la derniere ligne du post

donc oui, en effet, ca sent le bug a plein nez...
(en informatique, c'est souvent ce qu'on dit quand on n'a plus d'idée :) )

bonne continuation
0
Rejoignez-nous