Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Optimizing a query
Message
De
28/01/2009 18:13:40
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Optimizing a query
Versions des environnements
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Application:
Web
Divers
Thread ID:
01377898
Message ID:
01377898
Vues:
65
The following query runs optimized:
SELECT Temp.AddDate,Thread.NoThread,Thread.Title
 FROM (SELECT TOP 10 MIN(Thread.NoThread) AS NoThread,MAX(Thread.AddDate) AS AddDate,MAX(Thread.Numero) AS Numero
 FROM Thread
 WHERE Thread.AddDate>ldDate AND Thread.NoParent=0 AND (Thread.NoClient=44 OR Thread.NoClient=99 OR Thread.NoClient=51 OR 
 Thread.NoClient=37 OR Thread.NoClient=10 OR Thread.NoClient=39 OR Thread.NoClient=32 OR Thread.NoClient=41 OR Thread.NoClient=16 OR 
 Thread.NoClient=24 OR Thread.NoClient=50 OR Thread.NoClient=29 OR Thread.NoClient=28 OR Thread.NoClient=33 OR Thread.NoClient=38 OR 
 Thread.NoClient=36 OR Thread.NoClient=35 OR Thread.NoClient=21 OR Thread.NoClient=17 OR Thread.NoClient=5 OR Thread.NoClient=9 OR 
 Thread.NoClient=42 OR Thread.NoClient=52)
 GROUP BY Thread.NoThread ORDER BY 2 DESC) Temp
 INNER JOIN Thread ON Temp.NoThread=Thread.Numero
 ORDER BY Temp.AddDate DESC
But, if I add a condition in it for a sub query, it is slow.
SELECT Temp.AddDate,Thread.NoThread,Thread.Title
 FROM (SELECT TOP 10 MIN(Thread.NoThread) AS NoThread,MAX(Thread.AddDate) AS AddDate,MAX(Thread.Numero) AS Numero
 FROM Thread
 WHERE Thread.AddDate>ldDate AND Thread.NoParent=0 AND (Thread.NoClient=44 OR Thread.NoClient=99 OR Thread.NoClient=51 OR 
 Thread.NoClient=37 OR Thread.NoClient=10 OR Thread.NoClient=39 OR Thread.NoClient=32 OR Thread.NoClient=41 OR Thread.NoClient=16 OR 
 Thread.NoClient=24 OR Thread.NoClient=50 OR Thread.NoClient=29 OR Thread.NoClient=28 OR Thread.NoClient=33 OR Thread.NoClient=38 OR 
 Thread.NoClient=36 OR Thread.NoClient=35 OR Thread.NoClient=21 OR Thread.NoClient=17 OR Thread.NoClient=5 OR Thread.NoClient=9 OR 
 Thread.NoClient=42 OR Thread.NoClient=52) AND
 Thread.Numero NOT IN (SELECT Thread2.NoParent FROM Thread AS Thread2 WHERE Thread.Numero=Thread2.NoParent)
 GROUP BY Thread.NoThread ORDER BY 2 DESC) Temp
 INNER JOIN Thread ON Temp.NoThread=Thread.Numero
 ORDER BY Temp.AddDate DESC
How can I adjust it so it would be optimized?
Michel Fournier
Level Extreme Inc.
Designer, architect, owner of the Level Extreme Platform
Subscribe to the site at https://www.levelextreme.com/Home/DataEntry?Activator=55&NoStore=303
Subscription benefits https://www.levelextreme.com/Home/ViewPage?Activator=7&ID=52
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform