#383 closed enhancement (fixed)
SDF: Optimize "in" conditions in select filters.
Reported by: | brentrobinson | Owned by: | brentrobinson |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | SDF Provider | Version: | 3.3.1 |
Severity: | 2 | Keywords: | SDF in filter performance select |
Cc: | External ID: |
Description
The SDF Provider's FdoISelect implementation does indexed lookups, of values in "=" comparison conditions in the select filter, when appropriate. However, this type or processing is not done for "in" conditions. A table scan is always done when the filter contains an "in".
The SDF Provider will be enhanced to do indexed lookups, on "in" condition values when all of the following are true:
- the class being selected from has 1 identity property
- the property for the "in" expression is the identity property for the class
- types for all values match the identity property data type.
- the filter does not contain any other expressions that cannot be optimized.
Change History (3)
comment:1 by , 16 years ago
Status: | new → assigned |
---|
comment:2 by , 16 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:3 by , 16 years ago
Performance tested using sdf file containing 785,000 features.
For the following filter:
PK1 in ( 200000.0 )
the before and after times were as follows.
Time (sec)
Disk Caching Before After --------------- ---------- ---------- No 8.687 0.016 Yes 0.844 < 0.001
Disk Caching = No was when the SDF file had not yet been put into the disk cache, at the start of the test.
Revision: 4060 Author: brentrobinson Date: 2:24:20 PM, Friday, August 22, 2008 Message: Ticket#383: optimize "in" condition handling in selects.
Modified : /trunk/Providers/SDF/Src/Provider/SdfQueryOptimizer.cpp Modified : /trunk/Providers/SDF/Src/Provider/SdfQueryOptimizer.h Modified : /trunk/Providers/SDF/Src/UnitTest/MasterTest.cpp Modified : /trunk/Providers/SDF/Src/UnitTest/MasterTest.h