- 博客(10)
- 资源 (3)
- 收藏
- 关注
原创 代价
想获得任何东西,都需要付出代价。问题在于代价的大、或小。在你真正行动之前,并不能确定。分布式系统做资源管理,是个麻烦事。两种策略:分布式管理、集中管理。分布式管理性能好,没有单点压力,但是实现困难,问题多,可能精读低;集中管理性能差,有单点压力,但是实现相对简单,并且精确度高。那么,我们应该选择哪种策略呢?集中管理,性能有多差?压力有多大?说不定并没有想象的大呢?为了精读,你愿意付出多大代价?在真正试一试之前,心里真是没有底。这就是代价有意思的地方,在你真正去做之前,一切都是停留在纸面的推演,水
2020-07-30 21:48:44 181
原创 【SQL 优化器技术系列】 连接顺序(Join Order)
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。这一节聊连接顺序。我们不会讲怎么去决策连接顺序,会讲做好连接顺序的决策有多难:N 表 join 时,表的连接顺序有 N! 种组合,N=5时,N!= 120每种 join 可以选择多种连接算法,如 NLJ.
2020-07-16 01:11:53 1417
原创 【SQL 优化器技术系列】 Or Expansion
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。简单来说,OR Expansion 就是把 OR 拆成 UNION ALL,来打开优化空间。举个例子:select * from t1, t2 where t1.pkey > 10 or t2.pk.
2020-07-16 00:52:04 380
原创 【SQL 优化器技术系列】 外连接消除
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。外连接消除就是将一个 outer join 转换成 inner join。例如下面的查询适合做外连接消除:select * from a left join b on a.pk = b.pk where .
2020-07-14 18:00:49 395
原创 【SQL 优化器技术系列】谓词下推和上拉
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。一个复杂 query 里可能包含多个视图和子查询(下称语句块),在它们的内部和外面还有很多谓词。谓词下推是指将外面的谓词条件下推到语句块内部,降低结果集大小、扩大优化空间;谓词上拉是指把谓词从一个语句块.
2020-07-14 17:57:13 3302
原创 【SQL 优化器技术系列】 公共子表达式消除
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。这个技术原理也很简单,初中就学习过:(a * b) + (a * c) = a * (b + c)在这个式子里,如果 a 是一个常量,那么这个变换没什么意义,但是考虑如果 a 是一个函数,改写成:(f.
2020-07-14 17:37:15 669
原创 【SQL 优化器技术系列】谓词推导
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。谓词推导(Transitive predicate generation)听上去高大上,实际并不复杂。所谓谓词,简单理解成 一个个的 WHERE 条件好了。从WHERE A.C1 = B.C1 AND A.
2020-07-14 17:23:50 379
原创 【SQL 优化器技术系列】 Subquery “flattening”
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。子查询是很费的操作,特别是关联子查询,外面每得到一行结果,就要去重新执行一遍子查询里的 SQL。最常见的优化手段是将子查询展开,改写成 join,semi-join,anti-join 的形式。子查询常见的.
2020-07-14 16:32:32 233
原创 【SQL 优化器技术系列】简单 view merging
Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。第一篇,改写最简单的改写是 view merging。create view MY_VIEW as SELECT * FROM factory WHERE CITY = 'Wuhan';select *.
2020-07-14 15:01:48 266
原创 外连接消除技术应用
上回介绍了外连接消除技术。今天更进一步来聊聊这个话题。select * from a right join b on a.m1 = b.m1 left join c on c.c1 = b.c1where c.c1 in (1,2,3);基于外连接消除技术,这个语句 left join 可以改写成 inner join:select * from a right join b on a.m1 = b.m1 inner join c on c.c1 = b.c1wh
2020-07-10 18:55:20 198
同义词词林(扩展版)
2010-05-18
FASS简介-抗锯齿原理
2009-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人