SQL Query Order Execution
Have you ever wondered how a typical SQL query is executed by the SQL engine of a relational database system? In this blog, SQL Query Order Execution I will explain the step-by-step process of executing a select query in a typical relational database system.
The Table
Let's start by understanding the table structure. Suppose we have a table with three columns: salary, designation, and address. The salary column represents the salary of an employee in dollars, the designation column represents the designation of an employee (represented by alphabets), and the address column represents the address of the employee's workplace.
create table emp ( salary int, designation varchar(32), address varchar(32));
The SQL Query
Now, let's consider a select query that is executed on this table. The query includes various clauses such as aggregate function, WHERE clause, GROUP BY clause, HAVING clause, ORDER BY clause, and LIMIT clause. This query aims to retrieve specific information from the table based on certain conditions.
Step-by-Step Execution
The execution of a select query follows a specific sequence in which the different clauses are applied and executed. Let's take a closer look at each step of the execution process. The SQL Query taken as example is :
select address , max(sal) as MaxSal from emp where DES = “D” group by address having MaxSal > 20 order by address desc limit 1
The order of execution of various SQL clauses is applied in the following order :
Let's walk through a sample example and see how the SQL clauses listed above are applied exactly in the given order.
Step 0: Linear Scan
The execution starts with a linear scan of the table. The SQL engine reads the table row by row. This process is known as a linear scan. As each row is read, the WHERE clause is immediately applied. The WHERE clause filters out rows that do not meet the specified conditions. In our example, the WHERE clause states that only rows with a designation of capital 'D' should be considered. Any row that does not meet this condition is discarded at this stage. After this step, we are left with four qualified rows.
Step 1: Grouping
Next, the qualified rows are grouped based on the GROUP BY field. In our example, the GROUP BY field is the address. To perform this grouping, an internal temporary hash table is created. The hash table uses the GROUP BY field as the key and a linked list of records as the value. The hash table represents the grouping of records with the same address. In our case, the hash table has three buckets, each containing the records with the same address.
Step 2: Applying Aggregate Function
After grouping, the aggregate function is applied to each bucket of the hash table. In our example, the aggregate function is finding the maximum salary value. The SQL engine walks over the linked list of each bucket and selects the maximum salary value. The result of this step is a transformed hash table where the keys remain the same, but the value part contains the fields specified in the SELECT list. In our case, the transformed hash table includes the address field and the maximum salary field.
Recommended by LinkedIn
Step 3: Applying HAVING Clause
After applying the aggregate function, the HAVING clause is applied. The HAVING clause filters out records from the hash table that do not satisfy the specified criteria. In our example, the HAVING clause states that only records with a maximum salary less than 20 should be considered. Based on this criteria, the first bucket of the hash table is discarded, and the second and third buckets remain.
Step 4: Applying ORDER BY Clause
Next, the ORDER BY clause is applied. The ORDER BY clause specifies the sorting order of the records. In our example, the records are sorted in ascending order based on the maximum salary value. After sorting, we have a sorted list of qualified records.
Step 5: Applying LIMIT Clause
Finally, the LIMIT clause is applied. The LIMIT clause specifies the number of records to be emitted as output. In our example, the LIMIT clause states that only the first record should be outputted. Therefore, the final output of our select query is the first record from the sorted list.
Conclusion
In conclusion, the execution of a select query involves multiple steps that are executed in a specific order. The SQL engine reads the table, applies the WHERE clause, groups the qualified rows, applies the aggregate function, filters records based on the HAVING clause, sorts the records based on the ORDER BY clause, and emits the output based on the LIMIT clause. Understanding this execution process is crucial for SQL developers and can be a common interview question.
Stay tuned for our upcoming lecture video where we will implement the SQL interface and demonstrate the step-by-step execution of select queries.
Video Explaining the above Concept (Sign Up Required ): www.csepracticals.com/share-lesson?course_id=6294&lesson_id=60568
Full Course on RDBMS Development in C/C++ :
visit our website for more courses and offers. Get 5 Free Courses on Sign Up.
Join our telegram Group : https://t.me/telecsepracticals
--
8moFgessossedessa loo