IP Library › Granted Patent US 10,242,037
Granted Patent B2
US 10,242,037 · App. 15/492,839 · Granted Mar 26, 2019

Index suggestion engine for relational databases

Inventor: Gurnish Anand (San Francisco, CA)
Assignee: ServiceNow, Inc.
G06F17/30321G06F17/3053G06F17/30315G06F17/30418G06F17/30424G06F17/30575
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 10,242,037
App. No.
15/492,839
Granted
Mar 26, 2019
Kind
B2
Abstract

Creating and executing flow plans by performing at least the following: obtaining a run-time flow plan that comprises a trigger, a first operation, and a second operation, wherein the first operation precedes the second operation within the run-time flow plan and one or more input values of the second operation are linked to the first operation, determining whether one or more conditions of the trigger are met, execute the first operation based at least on the determination that the one or more conditions of the trigger are met, monitoring whether the second operation is ready for execution based at least on a determination that the one or more input values of a second action operation are ready, and executing the second action operation when the second action operation has been identified as ready for execution.

Claims (46)

1. A system, comprising:

a non-transitory memory; and

one or more hardware processors configured to read instructions from the non-transitory memory to cause the system to:

receive a database query;

parse the database query to identify a plurality of columns in one or more database tables;

sort at least some columns of the identified plurality of columns based on a database operation in the database query;

determine a histogram of values for each column of the sorted columns based on characteristics of fields in each column;

determine a total weight for each column of the sorted columns based on the histogram;

select a column from the sorted columns based on the total weight for each column; and

generate a suggested database index based on the selected column.

2. The system of claim 1 , wherein a first column of the suggested database index comprises the selected column.

3. The system of claim 1 , wherein the total weight comprises an indication of a cardinality of each column.

4. The system of claim 3 , wherein selecting the columns comprises selecting the column having a highest indicated cardinality.

5. The system of claim 3 , further comprising selecting a second column for the suggested database index based on the total weight for the second column as compared to other columns of the sorted columns.

6. The system of claim 1 , wherein the database query comprises database operations on two or more tables, and further comprising:

selecting a driving table based on a combined total weight of columns associated with each table, and wherein the suggested database index is based on the driving table.

7. The system of claim 1 , wherein the selected column is based on a column referenced by a WHERE clause in the database query.

8. A method for suggesting a database index, comprising:

receiving a database query;

parsing the database query to identify a plurality of columns in one or more database tables;

sorting at least some columns of the identified plurality of columns based on a database operation in the database query;

determining a histogram of values for each column of the sorted columns based on characteristics of fields in each column;

determining a total weight for each column of the sorted columns based on the histogram;

selecting a column from the sorted columns based on the total weight for each column; and

generating a suggested database index based on the selected column.

9. The method of claim 8 , wherein a first column of the suggested database index comprises the selected column.

10. The method of claim 8 , wherein the total weight comprises an indication of a cardinality of each column.

11. The method of claim 10 , wherein selecting the column comprises selecting the column having a highest indicated cardinality.

12. The method of claim 10 , further comprising selecting a second column for the suggested database index based on the total weight for the second column as compared to other columns of the sorted columns.

13. The method of claim 8 , wherein the database query comprises database operations on two or more tables, and further comprising:

selecting a driving table based on a combined total weight of columns associated with each table, and wherein the suggested database index is based on the driving table.

14. The method of claim 8 , wherein the selected column is based on a column referenced by a WHERE clause in the database query.

15. A non-transitory computer readable medium containing instructions that, when executed by one or more processors cause a programmable device to:

receive a database query;

parse the database query to identify a plurality of columns in one or more database tables;

sort at least some columns of the identified plurality of columns based on a database operation in the database query;

determine a histogram of values for each column of the sorted columns based on characteristics of fields in each column;

determine a total weight for each column of the sorted columns based on the histogram;

select a column from the sorted columns based on the total weight for each column; and

generate a suggested database index based on the selected column.

16. The non-transitory computer readable medium of claim 15 , wherein a first column of the suggested database index comprises the selected column.

17. The non-transitory computer readable medium of claim 15 , wherein the total weight comprises an indication of a cardinality of each column.

18. The non-transitory computer readable medium of claim 17 , wherein selecting the columns comprises selecting the column having a highest indicated cardinality.

19. The non-transitory computer readable medium of claim 17 , further comprising selecting a second column for the suggested database index based on the total weight for the second column as compared to other columns of the sorted columns.

20. The non-transitory computer readable medium of claim 15 , wherein the database query comprises database operations on two or more tables, and further comprising:

selecting a driving table based on a combined total weight of columns associated with each table, and wherein the suggested database index is based on the driving table.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2017
From: ANAND, GURNISH
To: SERVICENOW, INC.
Reel/Frame 042086/0478 →
Continuity (1)
Related Publication 20180307715A1 · Oct 25, 2018