《数据库系统概论》十一章汇总--基于《数据库系统概论》第五版王珊一书|第九章--关系查询处理和查询优化

简介: 系列的博客都是基于《数据库系统概论》第五版王珊一书,进行的知识总结和课后习题汇总,从第一章到第十一章,如果觉得不错记得收藏点个赞吧~你的小小支持,是我的大大动力!

第九章:关系查询处理和查询优化


了解

查询处理的基本步骤(查询分析、查询检查、查询优化、查询执行)


掌握

什么是关系系统的查询优化,查询优化的方法

画出查询的语法树以及优化后的语法树

代数优化算法、物理优化算法


查询优化在关系数据库系统中的重要性和可能性


重要性:

关系系统的查询优化既是RDBMS实现的关键技术,又是关系系统的优点所在,它减轻了用户选择存取路径的负担,用户只要提出“干什么”,不必指出“这么干”

查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化”做得更好


可能性:

优化器可以从数据字典中获取许多统计信息,例如各个关系中的元组数,关系中每个属性值的分布情况,这些属性上是否有索引,是什么索引(B+数索引、Hash索引、唯一索引、组合索引)等等。优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息

如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的

优化器可以考虑数十甚至数百种不同的执行计划,从中选出较优的一个,而程序员一般只能考虑有限的几种可能性

优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术


语法树


可以结合我们的二叉树去理解,这里不过多介绍

网络异常,图片无法展示
|


关系数据库管理系统查询优化的一般准则

代数优化策略

选择运算应尽可能先做

把投影运算和选择运算同时进行

把投影同其前或其后的双目运算结合起来执行

把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算

找出公共子表达式

物理优化

选取合适的连接算法


关系数据库管理系统查询优化的一般步骤

把查询转换成某种内部表示,通常用的内部表示是语法树

把语法树转换成标准(优化)形式,即利用优化算法把原始的语法树转换成优化的形式

选择低层的存取路径

生成查询计划,选择所需代价最小的计划加以执行

目录
相关文章
|
13天前
|
关系型数据库 数据库连接 数据库
Python执行PG数据库查询语句:以Markdown格式打印查询结果
使用Python的`psycopg2`和`pandas`库与PostgreSQL交互,执行查询并以Markdown格式打印结果。首先确保安装所需库:`pip install psycopg2 pandas`。接着建立数据库连接,执行查询,将查询结果转换为DataFrame,再用`tabulate`库将DataFrame格式化为Markdown。代码示例包括连接函数、查询函数、转换和打印函数。最后限制列宽以适应输出。
|
14天前
|
缓存 监控 关系型数据库
优化数据库查询性能的五个技巧
在当今互联网时代,数据库查询性能是开发人员面临的重要挑战之一。本文将介绍五个有效的技巧,帮助开发人员优化数据库查询性能,提升系统的响应速度和稳定性。
|
4天前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
20 0
|
13天前
|
SQL 关系型数据库 数据库
Python执行PostgreSQL数据库查询语句,并打印查询结果
本文介绍了如何使用Python连接和查询PostgreSQL数据库。首先,确保安装了`psycopg2`库,然后创建数据库连接函数。接着,展示如何编写SQL查询并执行,例如从`employees`表中选取所有记录。此外,还讨论了处理查询结果、格式化输出和异常处理的方法。最后,提到了参数化查询和事务处理以增强安全性及确保数据一致性。
Python执行PostgreSQL数据库查询语句,并打印查询结果
|
11天前
|
SQL 存储 安全
SQL入门与进阶:数据库查询与管理的实用指南
一、引言 在数字化时代,数据库已经成为各行各业存储、管理和分析数据的关键基础设施
|
13天前
|
SQL 关系型数据库 数据库
Python查询PostgreSQL数据库
木头左教你如何用Python连接PostgreSQL数据库:安装`psycopg2`库,建立连接,执行SQL脚本如创建表、插入数据,同时掌握错误处理和事务管理。别忘了性能优化,利用索引、批量操作提升效率。下期更精彩!💡 csvfile
Python查询PostgreSQL数据库
|
1天前
|
SQL 前端开发 数据可视化
数据库开发关键之与DQL查询语句有关的两个案例
数据库开发关键之与DQL查询语句有关的两个案例
5 0
|
1天前
|
SQL 前端开发 关系型数据库
零基础学习数据库SQL语句之查询表中数据的DQL语句
零基础学习数据库SQL语句之查询表中数据的DQL语句
4 0
|
2天前
|
存储 SQL Java
千万级的数据库查寻中,如何提高查询效率?
千万级的数据库查寻中,如何提高查询效率?
|
3天前
|
监控 关系型数据库 MySQL
MySQL 查询数据库响应时长详解
- 启用慢查询日志(`slow_query_log`)分析超时查询,调整`long_query_time`阈值。 - 使用`EXPLAIN`检查查询执行计划,优化索引和查询结构。 - `SHOW PROFILE`揭示查询各阶段耗时,辅助性能调优。 - 开启Performance Schema监控服务器,通过`events_statements_summary_by_digest`等表分析性能。 - MySQL Workbench和Percona Toolkit等工具提供额外的性能分析和管理功能。 - 优化技巧:创建合适索引,精简查询,调整数据库配置以提升响应速度。
38 0

热门文章

最新文章