[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 数据库 > 其它 > 正文
PostgreSQL7.0手册-用户手册-19. SQL命令-CLUSTER
编译:何伟平 laser@zhengmai.com.cn (2001-04-21 21:42:59)

CLUSTER
名称
CLUSTER — 向服务器给出存储建簇的建议 
  
语法
CLUSTER indexname ON table
输入
indexname 
一个索引名称. 
table 
表的名称. 
输出
CLUSTER 
成功建簇. 
ERROR: relation  inherits "table" 
表 tablerelation_number 是从表 "table"继承来的 
ERROR: Relation table does not exist! 
表 table 不存在 
描述
CLUSTER 指示 Postgres 近似地基于索引 indexname 的度量对表 table 进行存储建簇.索引必须已经在表 table 上定义了. 
当对一个表建簇后,该表的物理存储将基于索引信息进行.建簇是静态的,也就是说,当表被更新后,改变的内容不会建簇.不会试图对更新过的记录重新建簇.如果需要,可以通过手工执行该命令的方法重建簇. 

注意
该表实际上按索引顺序拷贝到了一个临时表中,然后重新改成原名.因此,在建簇时所有赋予的权限和其它索引都将丢失. 
如果你只是随机的访问表中的行,那么在堆表中的数据的实际存储顺序是无关紧要的.但是,如果你对某些数据的访问多于其他数据,而且有一个索引将这些数据分组,那你就将从 CLUSTER 中获益. 

另一个 CLUSTER 很有帮助的例子是当你用索引从一个表中取出几个记录时.如果你从一个表中请求一定索引范围的值,或者是一个索引过的值对应多行,CLUSTER 也会有助于应用,因为如果索引标识出第一匹配行所在的堆存储页,所有其他行也可能已经在同一堆存储页里了,这样便节省了磁盘访问的时间,加速了查询. 

有两种建簇的数据.第一种是用 CLUSTER 命令,此命令将原表按你声明的索引重新排列.这个动作在操作大表时可能会很慢,因为每一行都从堆存储页里按索引顺序取出,如果存储页表没有排序,整个表是随机存放在各个页面的,因而每行都要进行依次磁盘页面操作.Postgres 有一个缓冲,但一个大表的主体是不可能都放到缓冲去的. 

另一个对数据建簇的方法是使用 

SELECT columnlist INTO TABLE newtable
     FROM table ORDER BY columnlist
这个用法使用 Postgres 排序的代码 ORDER BY 来匹配索引,在对未排序的数据操作时速度快得多.然后你可以删除旧表,用 ALTER TABLE/RENAME 将 temp 改成旧表名,并且重建所有索引.唯一的问题是 OID 将不保留.这时再做 CLUSTER 将快得多,因为大多数堆栈数据已经排过序了而且使用现有的索引. 
用法
以雇员的薪水属性对雇员关系建簇. 
CLUSTER emp_ind ON emp;
兼容性
SQL92
在 SQL92 规范里没有 CLUSTER 语句.
(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
PostgreSQL7.0手册-用户手册-19. SQL命令-VACUUM (2001-04-21 22:16:33)
PostgreSQL7.0手册-用户手册-19. SQL命令-UPDATE (2001-04-21 22:16:12)
PostgreSQL7.0手册-用户手册-19. SQL命令-UNLISTEN (2001-04-21 22:15:44)
PostgreSQL7.0手册-用户手册-19. SQL命令-TRUNCATE (2001-04-21 22:15:24)
PostgreSQL7.0手册-用户手册-19. SQL命令-SHOW (2001-04-21 22:15:01)
PostgreSQL7.0手册-用户手册-19. SQL命令-SET (2001-04-21 22:14:42)
PostgreSQL7.0手册-用户手册-19. SQL命令-SELECT INTO (2001-04-21 22:14:19)
PostgreSQL7.0手册-用户手册-19. SQL命令-SELECT (2001-04-21 22:14:01)
PostgreSQL7.0手册-用户手册-19. SQL命令-ROLLBACK (2001-04-21 22:13:41)
PostgreSQL7.0手册-用户手册-19. SQL命令-REVOKE (2001-04-21 22:13:18)

===更多相关===
 

★  樊强制作 欢迎分享  ★