Article ID: 129882
Article Last Modified on 12/9/2003
DBEngine.CompactDatabase "C:\VB\BIBLIO.MDB","C:\VB\BIBLIO2.MDB"
' Do other things here ...
Kill "C:\VB\BIBLIO.BAK"
Name "C:\VB\BIBLIO.MDB" As "C:\VB\BIBLIO.BAK"
Name "C:\VB\BIBLIO2.MDB" As "C:\VB\BIBLIO.MDB"
This speeds up queries because it writes all the data in a table into
contiguous pages on the hard disk. Scanning sequential pages is much
faster than scanning fragmented pages.
Dim DB As Database
Dim RS As RecordSet
Set DB = DBEngine.Workspaces(0).Opendatabase("Biblio.MDB")
DB.CreateQueryDef("Query1", "SELECT IIF([Au_ID]=1,"Hello","Goodbye")_
AS X FROM Authors")
Set RS = DB.OpenRecordSet("SELECT * FROM Query1 WHERE X='Hello'")
Because the IIF() expression in Query1 cannot be optimized, the query in
the OpenRecordSet also cannot be optimized. If an expression gets buried
deeply enough in a query tree, you can forget that it is there. As a
result, your entire string of queries cannot be optimized.
Set RS = DB.OpenRecordSet("SELECT * FROM Authors WHERE [Au_ID]=1")
SELECT Orders.[Company ID], Count(Orders.[Order ID]) AS
[CountOfOrder ID] FROM Customers INNER JOIN Orders ON
Customers.[Customer ID] = Orders.[Customer ID] GROUP BY
Orders.[Company Name];
Break the query into two separate queries, such as these:
SELECT Customers.[Company ID] FROM Customers GROUP BY
Customers.[Company ID];
SELECT Orders.[Customer ID], Count(Orders.[Order ID]) AS
[CountOfOrder ID] FROM Q1 INNER JOIN Orders ON Q1.[Customer ID] =
Orders.[Customer ID] GROUP BY Orders.[Customer ID];
Additional query words: 3.00 4.00 speedier quicker optimum vb4win vb4all
Keywords: kbcode KB129882