Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Set Collate
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Divers
Thread ID:
00607638
Message ID:
00607649
Vues:
35
Oi Rodolfo,

O que está acontecendo é que o índice foi criado em uma seqüência de Collate e está sendo usado em outra. Desta forma, as informações do índice tonam-se sem sentido, já que a pesquisa está sendo feita de uma forma imcompatível com a forma que os índices estão armazenados. Veja o teste abaixo (só copie para a Command Window e execute). Veja que ao mudar a seqüência de Collate o Rushmore pára de funcionar...

(Espero que te ajude de alguma forma)
CLEAR

SYS(3054,1)

CREATE TABLE Teste (ID char(10))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))
INSERT INTO Teste (ID) VALUES (SYS(2015))

SET COLLATE TO "MACHINE"
INDEX ON ID TAG Id

? "Consulta 1"
* Usa Rushmore
SELECT ID from Teste WHERE ID = "5" INTO CURSOR Teste1 NOFILTER 

SET COLLATE TO "GENERAL"
? "Consulta 2"
* Não usa Rushmore
SELECT ID from Teste WHERE ID = "5" INTO CURSOR Teste2 NOFILTER 

* Vamos recriar o índice, agora com COLLATE GENERAL e executar a mesma query...
SELECT Teste
DELETE TAG ALL
SET COLLATE TO "GENERAL"
INDEX ON ID TAG Id
? "Consulta 3"
* Usa Rushmore
SELECT ID from Teste WHERE ID = "5" INTO CURSOR Teste3 NOFILTER 
-----
Fabio Vazquez
http://www.fabiovazquez.com
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform