PostgreSQL 优化
一白.
菜鸟中的菜鸟
展开
-
PostgreSQL numeric类型上的算术运算比整数类型或者浮点数类型要慢很多
准备两个function,一个使用integer计算,一个使用numeric计算使用Integer计算:create function compute_integer()returns integer as $$declare num integer:=0;begin for i in 1..10000 loop num=num+i; end loop;原创 2015-01-20 10:21:52 · 6738 阅读 · 1 评论 -
PostgreSQL OR IN ANY
1. create tablepostgres=# create table tb5 (id integer,age integer);CREATE TABLEpostgres=# \d tb5 Table "public.tb5" Column | Type | Modifiers --------+---------+----------- id | in原创 2015-03-27 10:47:25 · 2262 阅读 · 1 评论 -
SQL解析过程
转载自: http://blog.aliyun.com/733简介SQL任务是ODPS中使用最频繁的一类作业,大部分用户开始使用ODPS时要做的第一件事情就是学习怎么写ODPS的SQL。ODPS SQL是一种非常灵活的语言,兼容大部分的SQL92规范,也对大规模计算场景做了一些特别的定制。有些用户写出的SQL让人看了之后茅塞顿开的感觉,也有一些神级用户经常写一些1000多行的SQL转载 2015-03-29 14:56:50 · 1784 阅读 · 1 评论 -
全扫描的影响因素之数据在数据块中的存储方式
一方面,返回的数据行的百分比很小,也可能使用全扫描;另一方面,返回的数据行的百分比很大,也有可能不应该使用全扫描。 下面看一个例子,看看即使返回的数据的百分比都很小,但数据的存储方式的不同,优化器在选择扫描的方式的不同。首先,创建了两个同样的具有10000行数据的表,然后,给出了每张表对于对一个查询的执行计划。注意,在该例子中查询只返回300行(只有总数据的3%)也会选择全表扫描。原创 2015-01-04 10:10:25 · 753 阅读 · 0 评论 -
数据库 执行计划的基本名词解释
1. 基于成本的优化器(cost-based plan); 它是看语句的代价(cost),这里的代价主要指Cpu和内存;优化器在判断是否使用这种方式的时候,主要参照的是表及索引的统计信息; 统计信息给出表的大小、多少行、每行的长度等信息。这些统计信息起初在库内是没有的,是做analyze后才出现的,很多的时侯过期统计 信息会令优化器做出一个错误的执行计划原创 2014-12-31 16:14:02 · 950 阅读 · 0 评论 -
数据库访问数据块的方式
优化器必须确定如何来访问你的sql所需要的数据。 在SQL语句的表达式和条件评估关闭,以及所有可能有助于更准确地生成执行计划的查询转换都执行完毕以后,生成执行计划的下一个步骤就是利用优化器来确定访问数据的最好方法。 一般来说,总共只有两种基本的数据访问方式: 全扫描和索引扫描,全扫描可能是全表扫描也有可能是快速全索引扫描。简单的说,全扫描是扫描所有目标数据已获得原创 2014-12-31 16:17:35 · 913 阅读 · 0 评论 -
什么是索引
如果你有一本‘疯狂java突破程序员基本功的16课’,并需要查找‘第7课 面向对象的陷阱’,你可以从第一页开始逐行查找每一页直到书中关于‘面向对象的陷阱’那部分,但这样的浏览会花费大量的时间,因此你会发现通过书中的目录来查找会更方便,只要通过目录找到了页码,你就直接可以翻到那一页进行浏览。索引就类似于书中的目录。默认的索引类型是B-Tree索引。索引建立在表中的一或多个列或者表达式上,将列值和原创 2015-01-25 19:39:27 · 910 阅读 · 0 评论 -
Btree索引的结构
索引具有一定的逻辑结构。如上图所示,索引包括一个或多个层次的分支块以及一个层次的叶子块。分支块保存着下一层级所包括的值范围信息,它会被在索引结构中进行搜索以获得所需的叶子块。索引的高度是指第一个分支块(也就是根索引块)到叶子块的分支层级数目。叶子块包含排序后的索引对象的值和行编号。(排序:是根据索引字段的值进行排序) 如果你新建一张新表,并在其字段上建立索引,索引将会包含一原创 2015-01-25 19:41:54 · 2028 阅读 · 0 评论 -
全扫描的影响因素之数据舍弃的百分比
请记住,全扫描是否为高效的选择取决于需要访问的数据块个数(IO操作)以及最终的结果集行数(舍弃的百分比)。如上一篇‘全扫描的影响因素之数据在数据块中的存储方式’中例子所示,数据的存储返回时在优化器决策的过程中扮演了重要的角色。此外,全扫描是否为高效的选择的另一个关键因素的舍弃。舍弃的行是那些用过筛选谓语(where条件)来进行验证,被证明是不符合条件后从最终的结果集中剔除的数据行。原创 2015-01-06 18:43:42 · 792 阅读 · 0 评论