数据库查询优化策略

数据库查询优化

逻辑层查询优化策略

1.尽可能的早做选择和投影(基本思路):可以使中间结果变小,节省几个数量级的执行时间
2.把选择和投影串接起来:一元运算序列可一起执行,只需对整个关系进行一趟扫描
3.把投影与其前或后的二元运算结合:在第一次用关系时去掉一些无关属性,可以避免多次扫描整个关系
4.把某些选择与其前的笛卡尔积合并成一个连接:当RxS前有选择运算且其中条件是R,S属性间比较运算的时。可以将其转换为连接运算节省时间
5.执行连接运算前对关系做适当的预处理:排序,索引
6.找出表达式里的公共子表达式:若公共的子表达式结果不大,则预先计算,以后直接读入结果,尤当视图情况下使用

  • 关系代数的基本操作

并(Union)交(Intersect)差(Except) 选择 投影

待优化查询示例背景

图书馆关系数据库

books(title,author,pname,lc_no);
publishers(pname,padder,pciy)
borrowers(name,addr,city,card_no)
loans(card_no,lc_no,date)

pname为出版社名,lc_no图书馆编目号
padder为出版社地址,pcity为出版社所在地
name为读者名,addr为读者所在地址,city为读者所在城市,card_no为图书证号,date为借出日期
创建视图
CREATE VIEW xloans(
 select title,author,pname,lc_no,name,addr,city,card_no,date
 from  books bs,borrowers b,loans l
 where bs.lc_no=l.lc_no and b.card_no=l.card_no

);
关系代数
xloans=⊓s (σ F (loans x booksb x orrowers))
s=title,author,pname,lc_no,name,addr,city,card_no,date
F=(bs.lc_no=l.lc_no)∧ b.card_no=l.card_no

基本关系代数的等价变换公式

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

select title from xloans where date<=1/1/79; 

⊓ title (σ date<=’1/1/79’ (xloans))

这里写图片描述

物理查询优化策略

DBMS衡量物理查询计划的优劣,I/O 访问次数,cpu占用时间,网络通信量等。

  • oracle收集统计信息放入表中
anlalyze {index|table|cluster} {indexname|tablename|clustername}
compute statistics {for table|for all[indexed] |columns[size n]}
  • 进行代价估算
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值