J'ai une table avec un champ mémo car contenant des chaines de
caractères longues (>255car).
- La requete suivante ne fonctionne que si le champ est défini comme non
indéxé
- Si le champ est défini comme indéxé sans doublons (il doit l'être dans
mon cas), la requête ne renvoie rien !!!
SELECT Table1.*
FROM Table1
WHERE
Table1.abc='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl
mnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij
klmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefgh
ijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef
ghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd
efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab
cdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
';
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel Carollo
Bonjour Christophe!
C'est en effet tellement incroyable que j'ai du essayer votre exemple.
Au depart, j'aurais jure que les champs memo ne peuvent pas etre indexes, mais en effet, l'option existe. A mon avis, le fait que l'option existe est un bug. Les index sont fait pour deux raisons: mettre les donnees dans un certain ordre, et permettre une recherche plus rapide des resultats (ce qui, en fait, est la meme raison que ci-dessus). Or, il faut savoir que les champs memo sont stockes sur une page qui est separee des pages "normales" des donnees d'une table. Ce qui est stocke dans la table, c'est le pointeur qui designe la page contenant les donnees du champ memo. Je parierai que ce qui est indexe, c'est en fait la premiere partie des champs, et non pas les champs eux-meme. En effet, si on fait une recherche sur une portion du champ (a l'aide de la fonction left() ou right() par exemple, on arrive a le retrouver. C'est certainement parcequ'on empeche l'indexage de faire son boulot. On n'en saura pas plus tant qu'un programmeur ayant connaissance de la facon dont ca se fait "sous le capot" ne nous le dira pas de facon certaine...
Pour ce qui est de votre question, je trouve plutot inhabituel tout d'abord de mettre un index sur un champ memo, ensuite de faire des recherches en les utilisant comme critere. Meme si rien ne l'interdit dans la syntaxe, ca ne veut pas dire pour autant que c'est une bonne idee...
Qu'essayez-vous de faire au juste? N'y aurait-il pas moyen de rechercher vos enregistrements sur d'autres criteres?
A suivre...
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
"Christophe" wrote in message news:un$p%
Bonjour,
Voici rapidement ma question :
J'ai une table avec un champ mémo car contenant des chaines de caractères longues (>255car).
- La requete suivante ne fonctionne que si le champ est défini comme non
indéxé - Si le champ est défini comme indéxé sans doublons (il doit l'être dans
C'est en effet tellement incroyable que j'ai du essayer votre exemple.
Au depart, j'aurais jure que les champs memo ne peuvent pas etre indexes,
mais en effet, l'option existe. A mon avis, le fait que l'option existe est
un bug.
Les index sont fait pour deux raisons: mettre les donnees dans un certain
ordre, et permettre une recherche plus rapide des resultats (ce qui, en
fait, est la meme raison que ci-dessus). Or, il faut savoir que les champs
memo sont stockes sur une page qui est separee des pages "normales" des
donnees d'une table. Ce qui est stocke dans la table, c'est le pointeur qui
designe la page contenant les donnees du champ memo. Je parierai que ce qui
est indexe, c'est en fait la premiere partie des champs, et non pas les
champs eux-meme. En effet, si on fait une recherche sur une portion du champ
(a l'aide de la fonction left() ou right() par exemple, on arrive a le
retrouver. C'est certainement parcequ'on empeche l'indexage de faire son
boulot. On n'en saura pas plus tant qu'un programmeur ayant connaissance de
la facon dont ca se fait "sous le capot" ne nous le dira pas de facon
certaine...
Pour ce qui est de votre question, je trouve plutot inhabituel tout d'abord
de mettre un index sur un champ memo, ensuite de faire des recherches en les
utilisant comme critere. Meme si rien ne l'interdit dans la syntaxe, ca ne
veut pas dire pour autant que c'est une bonne idee...
Qu'essayez-vous de faire au juste? N'y aurait-il pas moyen de rechercher vos
enregistrements sur d'autres criteres?
A suivre...
--
Daniel :-)
Computing Technologies International - www.computing-tech.com - We
provide solutions...
"Christophe" <christophe@la_poste.net> wrote in message
news:un$p%23eCGEHA.1708@TK2MSFTNGP12.phx.gbl...
Bonjour,
Voici rapidement ma question :
J'ai une table avec un champ mémo car contenant des chaines de
caractères longues (>255car).
- La requete suivante ne fonctionne que si le champ est défini comme
non
indéxé
- Si le champ est défini comme indéxé sans doublons (il doit l'être
dans
C'est en effet tellement incroyable que j'ai du essayer votre exemple.
Au depart, j'aurais jure que les champs memo ne peuvent pas etre indexes, mais en effet, l'option existe. A mon avis, le fait que l'option existe est un bug. Les index sont fait pour deux raisons: mettre les donnees dans un certain ordre, et permettre une recherche plus rapide des resultats (ce qui, en fait, est la meme raison que ci-dessus). Or, il faut savoir que les champs memo sont stockes sur une page qui est separee des pages "normales" des donnees d'une table. Ce qui est stocke dans la table, c'est le pointeur qui designe la page contenant les donnees du champ memo. Je parierai que ce qui est indexe, c'est en fait la premiere partie des champs, et non pas les champs eux-meme. En effet, si on fait une recherche sur une portion du champ (a l'aide de la fonction left() ou right() par exemple, on arrive a le retrouver. C'est certainement parcequ'on empeche l'indexage de faire son boulot. On n'en saura pas plus tant qu'un programmeur ayant connaissance de la facon dont ca se fait "sous le capot" ne nous le dira pas de facon certaine...
Pour ce qui est de votre question, je trouve plutot inhabituel tout d'abord de mettre un index sur un champ memo, ensuite de faire des recherches en les utilisant comme critere. Meme si rien ne l'interdit dans la syntaxe, ca ne veut pas dire pour autant que c'est une bonne idee...
Qu'essayez-vous de faire au juste? N'y aurait-il pas moyen de rechercher vos enregistrements sur d'autres criteres?
A suivre...
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
"Christophe" wrote in message news:un$p%
Bonjour,
Voici rapidement ma question :
J'ai une table avec un champ mémo car contenant des chaines de caractères longues (>255car).
- La requete suivante ne fonctionne que si le champ est défini comme non
indéxé - Si le champ est défini comme indéxé sans doublons (il doit l'être dans