IP Library › Granted Patent US 12,748,756
Granted Patent B2
US 12,748,756 · App. 19/067,067 · Granted Sep 29, 2026

Index join query optimization

Inventors: Manuel Mayr (Walldorf, DE); Wolfgang Stephan (Heidelberg, DE); Till Merker (Sandhausen, DE)
Assignee: SAP SE
G06F16/24544G06F16/2456
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 12,748,756
App. No.
19/067,067
Granted
Sep 29, 2026
Kind
B2
Abstract

In some implementations, there is provided a method including receiving a query request including a join, wherein the join includes a range between a first predicate of the join and a second predicate of the join; generating a query plan including an index join operator; executing the query plan including the index join operator including getting, from the sorted dictionary, the first value identifier, the second value identifier, and the one or more intervening value identifiers between the first value identifier and the second value identifier and executing the index join operator using the first value identifier, the second value identifier, and the one or more intervening value identifiers to obtain a result set.

Claims (33)

1 . A system, comprising:

at least one data processor; and

at least one memory storing instructions which, when executed by the at least one data processor, cause operations comprising:

receiving a query request including a join, wherein the join includes a range between a first predicate of the join and a second predicate of the join, and the join selects from a first table and a second table one or more values based on the range between the first predicate and the second predicate;

generating a query plan including an index join operator, wherein the index join operator includes a join handler configured to get, from a sorted dictionary at query plan execution, a first value identifier corresponding to the first predicate, a second value identifier corresponding to the second predicate, and one or more intervening value identifiers between the first value identifier and the second value identifier,

wherein generating the query plan comprises generating a directed acyclic graph (DAG) comprising a plurality of operators including the index join operator, the plurality of operators being configured into one or more pipelines for execution;

executing the query plan including the index join operator, wherein the executing further comprises getting, from the sorted dictionary, the first value identifier, the second value identifier, and the one or more intervening value identifiers between the first value identifier and the second value identifier, and executing the index join operator using the first value identifier, the second value identifier, and the one or more intervening value identifiers to obtain a result set; and

responding to the query request by providing the result set.

2 . The system of claim 1 , wherein the query request is received at a database execution engine.

3 . The system of claim 1 , wherein the query plan is generated, by a database execution engine, in response to the query request that is received.

4 . The system of claim 1 , wherein the join handler is configured to include one or more instructions to perform the get from the sorted dictionary.

5 . The system of claim 1 , wherein the executing of the query plan including the index join operator is performed by at least a database execution engine.

6 . The system of claim 1 , wherein the index join operator includes the join handler, wherein the join handler gets from the sorted dictionary the first value identifier, the second value identifier, and the one or more intervening value identifiers.

7 . The system of claim 1 , wherein the index join operator includes the join handler, wherein the join handler executes the index join operator using the first value identifier, the second value identifier, and the one or more intervening value identifiers.

8 . A method comprising:

receiving a query request including a join, wherein the join includes a range between a first predicate of the join and a second predicate of the join, and the join selects from a first table and a second table one or more values based on the range between the first predicate and the second predicate;

generating a query plan including an index join operator, wherein the index join operator includes a join handler configured to get, from a sorted dictionary at query plan execution, a first value identifier corresponding to the first predicate, a second value identifier corresponding to the second predicate, and one or more intervening value identifiers between the first value identifier and the second value identifier,

wherein generating the query plan comprises generating a directed acyclic graph (DAG) comprising a plurality of operators including the index join operator, the plurality of operators being configured into one or more pipelines for execution;

executing the query plan including the index join operator, wherein the executing further comprises getting, from the sorted dictionary, the first value identifier, the second value identifier, and the one or more intervening value identifiers between the first value identifier and the second value identifier, and executing the index join operator using the first value identifier, the second value identifier, and the one or more intervening value identifiers to obtain a result set; and

responding to the query request by providing the result set.

9 . The method of claim 8 , wherein the query request is received at a database execution engine.

10 . The method of claim 8 , wherein the query plan is generated, by a database execution engine, in response to the query request that is received.

11 . The method of claim 8 , wherein the join handler is configured to include one or more instructions to perform the get from the sorted dictionary.

12 . The method of claim 8 , wherein the executing of the query plan including the index join operator is performed by at least a database execution engine.

13 . The method of claim 8 , wherein the index join operator includes the join handler, wherein the join handler gets from the sorted dictionary the first value identifier, the second value identifier, and the one or more intervening value identifiers.

14 . A non-transitory computer-readable medium including instructions which, when executed by at least one data processor, cause operations comprising:

receiving a query request including a join, wherein the join includes a range between a first predicate of the join and a second predicate of the join, and the join selects from a first table and a second table one or more values based on the range between the first predicate and the second predicate;

generating a query plan including an index join operator, wherein the index join operator includes a join handler configured to get, from a sorted dictionary at query plan execution, a first value identifier corresponding to the first predicate, a second value identifier corresponding to the second predicate, and one or more intervening value identifiers between the first value identifier and the second value identifier,

wherein generating the query plan comprises generating a directed acyclic graph (DAG) comprising a plurality of operators including the index join operator, the plurality of operators being configured into one or more pipelines for execution;

executing the query plan including the index join operator, wherein the executing further comprises getting, from the sorted dictionary, the first value identifier, the second value identifier, and the one or more intervening value identifiers between the first value identifier and the second value identifier, and executing the index join operator using the first value identifier, the second value identifier, and the one or more intervening value identifiers to obtain a result set; and

responding to the query request by providing the result set.

15 . The non-transitory computer-readable medium of claim 14 , wherein the query request is received at a database execution engine.

16 . The non-transitory computer-readable medium of claim 14 , wherein the query plan is generated, by a database execution engine, in response to the query request that is received.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2025
From: MAYR, MANUEL; STEPHAN, WOLFGANG; MERKER, TILL
To: SAP SE
Reel/Frame 071350/0430 →
Continuity (2)
Continuation 18354110 · Jul 18, 2023
Related Publication 20250200043A1 · Jun 19, 2025
References Cited (15)
US 10678791B2 · Chavan · 2020 [cited by examiner]
US 20090254532A1 · Yang · 2009 [cited by examiner]
US 20140067789A1 · Ahmed · 2014 [cited by examiner]
US 20140172908A1 · Konik · 2014 [cited by examiner]
US 20210034616A1 · Kiebler · 2021 [cited by examiner]
US 20210157779A1 · Fender · 2021 [cited by examiner]
US 20230401199A1 · Akidau · 2023 [cited by examiner]
US 20240004882A1 · Bove · 2024 [cited by examiner]
Deshmukh, H. “To pipeline or not to pipeline, that is the question.” arXiv preprint arXiv:2002.00866 (2020). [cited by applicant]
SAP “SAP HANA Performance Guide for Developers,” SAP HANA Platform 2.0 SPS 04; Document Version 1.1—Oct. 31, 2019, (Available at https://help.sap.com/doc/05b8cb60dfd94c82b86828ee77f7e0d9/2.8.04/en-US/SAP_HANA_Performanc… [cited by applicant]
SAP “SAP HANA SQL and System Views Reference,” SAP HANA Platform 2.0, SPS 00; Document Version: 1.0, Nov. 30, 2016, (Available at http://www.taubeta.ru/content/SAP_HANA_SQL.pdf), 1732 pages. [cited by applicant]
“SQL Join on Table A value within Table B range,” (Available at https://web.archive.org/web/20160104231844/https://stackoverflow.com/questions/12604146/sql-join-on-table-a-value-within-table-b-range), 3 pages. [cited by applicant]
Stonebraker, M. et al. “C-Store: A Column-Oriented DBMS.” Proceedings of 31st VLDB, Trondheim, Normway, Jan. 1, 2005. [cited by applicant]
Wesley, R. et al., “Leveraging compression in the tableau data engine.” Proceedings of the 2014 ACM SIGMOD international conference on Management of data. 2014. [cited by applicant]
Extended European Search Report issued in European Application No. 24184517.1-1203 mailed Nov. 21, 2024, 12 pages. [cited by applicant]