Upload
niyishaka-patrick
View
61
Download
1
Embed Size (px)
Citation preview
Contents
1. Query Processing
2. Translating SQL queries into RA
3. Evaluation Plan
4. Query Execution
5. Query Optimization
6. Translation Rules
7. Cost Estimations
1. Query Processing
▪ Aim of query processing - to find information in one or more databases, - and deliver it to the user quickly and efficiently. - to choose the most cost effective.
▪ Translation of queries - into expressions that can be used at physical level of file system. - Includes query optimization and query evaluation.
1. Query Processing
1. Query Processing ▪ Typical steps when processing a high-level query (e.g. SQL query) Query tree internal representation of the query Execution strategy how to retrieve results of query
1. Query Processing
2. Translating SQL queries into RA
▪ Translate query into its internal form. - This is then translated into Relational Algebra(RA). - The parser checks syntax, verifies relations.
▪ A RA expression may have many equivalent expressions.
▪ Example Σbalance<2500(πbalance(account))
Is equivalent to Πbalance(σbalance<2500(account))
Each relational algebra operation can be evaluated using one of several different algorithms. Correspondingly, a relational-algebra expression can be evaluated in many ways.
2. Translating SQL queries into RA
3. Evaluation Plan ▪ Annotated expression specifying detailed evaluation strategy.
▪ Example Use an index on balance to find accounts with balance < 2500, Or perform complete relation scan and discard accounts with balance ≥ 2500.
Initial canonical query tree
3. Evaluation Plan
Book (access#, title) Member (ticket#, name) Loan(loanedbook,loanedto)
Select member.name rom book, loan, member
where book.title = "dracula" and member.ticket# = loan.loanedto and loan.loanedbook = book.access#
4. Query Execution
For each operation (join, select, project, aggregation …) - Typical algorithms (e.g. Binary search for simple selection) - Specific or not to storage structure and access paths Book (access#, title) Member (ticket#, name) Loan(loanedbook,loanedto) Select member.name From book, loan, member
where book.title = "dracula" and member.ticket# = loan.loanedto and loan.loanedbook = book.access#
4. Query Execution
4. Query Execution
4. Query Execution