IP Library Granted Patent US 8,005,820
Granted Patent B2
US 8,005,820 · App. 11/535,670 · Granted Aug 23, 2011

Optimizing the processing of in-list rows

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,005,820
App. No.
11/535,670
Granted
Aug 23, 2011
Kind
B2
Abstract

A SQL query that includes an IN-List is optimized by utilizing an array insert to insert the IN-List into a spool and piggybacking IN-List rows into a join step.

Claims (42)

1. A computer-implemented method for optimizing a database query, in which the database query includes an IN-List, and in which a query optimizer component in a computing system utilizes the IN-List as a relation, where the method includes:

materializing, by the computing system, the IN-List into one or more values for use by a join operation.

2. The method of claim 1 further including performing, by the computing system, one or more array insert operations to insert the one or more values into a spool.

3. The method of claim 2 further including

evaluating, by the computing system, whether the IN-List is to be duplicated across a plurality of processing modules, and if so

performing one or more of the array INSERT operations on each of the plurality of processing modules.

4. The method of claim 2 further including evaluating, by the computing system, whether the IN-List is to be redistributed to a plurality of processing modules, and if so

grouping, by the computing system, rows of a database table that satisfy the IN-List on the basis of a hashing function,

packing, by the computing system, a portion of the rows that belong to same processing module into one array insert operation, and

performing one or more of the array INSERT operations on the processing module specified by the hash function.

5. The method of claim 1 further including performing, by the computing system, a join operation and including the one or more values.

6. The method of claim 1 further including

determining, by the computing system, whether a plurality of IN-Lists are specified by the database query, and if so

using a plurality of processing modules to process the IN-Lists.

7. The method of claim 6 further including

assessing, by the computing system, which of the plurality of IN-Lists is largest,

inserting, by the computing system, one or more values that satisfy the largest IN-List into a spool, and

packaging, by the computing system, in the spool one or more values satisfying an IN-List that follows the largest IN-List.

8. The method of claim 7 further including repeating, in the computing system, the method step of packaging in the spool a following IN-List until one or more values for all IN-Lists are packaged into the spool.

9. A database system for accessing a database, the database system including

a parallel processing system including one or more processing modules;

a plurality of CPUs, each of the one or more processing modules providing access to one or more CPUs,

a plurality of virtual processes, each of the one or more CPUs providing access to one or more of the virtual processes, each process configured to manage data stored in one of a plurality of data-storage facilities,

a query optimizer configured to optimize a plan for executing a database query to access data in a table, the optimizer including a routine configured to utilize an IN-List as a relation, wherein the IN-List is materialized into one or more values for use by a join operation.

10. The database system of claim 9 where the query optimizer is configured to perform one or more array insert operations to insert the one or more values into a spool.

11. The database system of claim 10 where the query optimizer is also configured to:

evaluate whether the IN-List is to be duplicated across a series of processing modules, and if so

perform one or more of the array INSERT operations on each of the plurality of processing modules.

12. The database system of claim 10 where the query optimizer is also configured to:

evaluate whether the IN-List is to be distributed to different processing modules, and if so,

group rows of the table that satisfy the IN-List on the basis of a hashing function;

pack a portion of the rows that belong to the same processing module into one array insert operation; and

perform one or more of the array INSERT operations on the processing module specified by the hashing function.

13. The database system of claim 12 where the query optimizer is also configured to:

assess which of the plurality of IN-Lists is largest,

insert one or more values that satisfy the largest IN-List into a spool, and

package in the spool one or more values satisfying an IN-List that follows the largest IN-List.

14. The database system of claim 9 where the optimizer is configured to perform a join operation and include the one or more values.

15. The database system of claim 9 where the query optimizer is also configured to:

determine whether a plurality of IN-Lists are specified by the database query, and if so

instruct a plurality of processing modules to process the IN-Lists.

16. The database system of claim 9 where the query optimizer is configured to continue assessing, inserting and packaging until one or more values satisfying all IN-Lists are packaged into the spool.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2008
From: NCR CORPORATION
To: TERADATA US, INC.
Reel/Frame 020666/0438 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2006
From: CARLSON, JAMES; AU, GRACE; RAMESH, BHASHYAM; CHEN, HAIYEN
To: NCR CORPORATION
Reel/Frame 018312/0753 →