2013-04-11 3 views
1

J'utilise MS ACCESS 2007 avec C# et je suis en train d'exécuter la requête suivante ..requête SQL réponse très lente

Mon tableau comporte trois colonnes Word, POS et Freq et a des enregistrements uniques. Le nombre total d'enregistrements est de "millions d'enregistrements".

Cette requête fonctionne bien pour moi et retourner tous les résultats corrects que je veux:

Select Word, POS, Freq from TName Where Word **IN** (SELECT Word from TName      Group By Word Having Count(*) > 1) Order By Word; 

Mais quand j'ai essayé la requête suivante similaire (dans un EXE), le système cesse de répondre.

Select Word, POS, Freq from TName Where Word **NOT IN** (SELECT Word from TName      Group By Word Having Count(*) > 1) Order By Word; 

J'ai aussi essayé la deuxième commande SQL dans le panneau MS Access Query et MS Access cesser de répondre, mais retour des résultats très très lentement.

S'il vous plaît, aidez-moi ...

Répondre

0

Puisque vous êtes dans Access, vous pouvez simplement faire le SELECT dans sa propre requête, puis il suffit d'utiliser un ordinaire JOIN.

Recherche WordCounts:

SELECT Word from TName Group By Word Having Count(*) > 1 

Votre requête finale:

SELECT Word, POS, Freq from TName 
INNER JOIN WordCounts ON TName.Word = WordCounts.Word 
0

Créez la requête imbriqué dire QryWordsThatAppearMoreThanOnce SELECT Mot de TNAME Grouper par mot ayant COUNT (*)> 1

Puis rejoindre

Select n.Word, n.POS, n.Freq from TName n 
inner join QryWordsThatAppearMoreThanOnce q On q.Word = n.Word 
Order By n.Word 

L'autre serait

Select n.Word, n.POS, n.Freq from TName n 
Left join QryWordsThatAppearMoreThanOnce q On q.Word = n.Word 
and q.Word is null 
Order By n.Word 

Quelque chose comme ça de toute façon, possibilité d'une bizarrerie d'accès qui entrent en jeu.