数据库查询优化问题

本文介绍了数据库查询的四个阶段:分析、检查、优化和执行,并重点讨论查询优化,包括启发式策略和索引原理。数据库索引使用平衡树(如B+ Tree)结构,主键将表转化为聚集索引,非聚集索引则需要通过主键查找真实数据。覆盖索引可以提高查询性能,避免通过主键再次查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原先数据库没有好好学习,感觉一直是似懂非懂的状态,很多原理也不懂,今天抽时间查阅一些资料自己也总结了一些。
本文数据库索引原理部分主要参考博文:http://www.cnblogs.com/aspwebchh/p/6652855.html ,是一片很优秀的文章,值得一看。
不说废话直接开撸:
关系数据库管理系统查询处理可分为四个阶段:查询分析、查询检查、查询优化和查询执行。
查询分析: 对查询语句进行扫描、词法分析和语法分析,判断查询语句是否符合SQL语法规则。如果没有错误则进行下一步处理,否则报告语句中出现的错误。
查询检查: 对合法的查询语句进行语义检查,注意是检查语句中涉及到的数据库、表对象、关系名、属性等是否存在以及对完整性的检查。如果检查通过则转换成等价的关系代数表达式。
查询优化: 查询优化是指选择一个高效执行的查询策略,一般分为代数优化和物理优化。代数优化是指关系表达式的优化,按照一定的规则通过关系代数表达式进行等价变换,改变代数表达式中操作的次序和组合,使得查询更高效。物理优化则是指存取路径和底层操作算法的选择。
查询执行: 前面的步骤都是为了这一步。根据优化器得到的执行策略生成查询执行计划,由代码生成器生成执行这个查询计划的语句,然后执行 再 返回结果。

查询树的启发式查询优化: 选择运算尽可能先做;把投影运算和选择运算同时进行;把投影同其前后的双目运算结合起来 ;把某些选择同在他前面要执行的笛卡尔积结合起来称为一个运算;找出公共子表达式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值