数据库查询优化策略

xiaoxiao2021-02-27  185

数据库查询优化

逻辑层查询优化策略

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]} 进行代价估算
转载请注明原文地址: https://www.6miu.com/read-10305.html

最新回复(0)