Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#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 brentrobinson, 16 years ago

Status: newassigned

comment:2 by brentrobinson, 16 years ago

Resolution: fixed
Status: assignedclosed

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

comment:3 by brentrobinson, 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.

Note: See TracTickets for help on using tickets.