Queries executed from SQL Server against Foxpro free tables via the VFPOLEDB Provider do not seem to recognize IDX files.
I have a linked server setup in SQL Server 2005 to a set of Foxpro free tables using the VFPOLEDB provider (v.9). If I execute a query against a table that has a CDX index, and my WHERE includes the field(s) in one of the CDX keys, then I can see that the CDX is being used based on response time. Query is fast.
But if i execute a query against the same table, which also contains several IDX files, and use an expression in the WHERE clause that SHOULD match the expression in one of the IDX files, the query is slow, and is obviously not using the IDX file.
From the research i've done, it seems that VFPOLEDB will use Rushmore, and that Rushmore will use an IDX if it can. But my tests do not concur.
I do NOT have control over the Foxpro data; I CANNOT add an index or modify one or anything. I can only read the data.
Sample query run from SQL Server Management Studio:
select * from openquery(FOXDATA,'select ssn, lastname from employee where ssn="123-456-7890"')
I have a linked server setup in SQL Server 2005 to a set of Foxpro free tables using the VFPOLEDB provider (v.9). If I execute a query against a table that has a CDX index, and my WHERE includes the field(s) in one of the CDX keys, then I can see that the CDX is being used based on response time. Query is fast.
But if i execute a query against the same table, which also contains several IDX files, and use an expression in the WHERE clause that SHOULD match the expression in one of the IDX files, the query is slow, and is obviously not using the IDX file.
From the research i've done, it seems that VFPOLEDB will use Rushmore, and that Rushmore will use an IDX if it can. But my tests do not concur.
I do NOT have control over the Foxpro data; I CANNOT add an index or modify one or anything. I can only read the data.
Sample query run from SQL Server Management Studio:
select * from openquery(FOXDATA,'select ssn, lastname from employee where ssn="123-456-7890"')