Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1096345
  • 博文数量: 414
  • 博客积分: 10030
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 21:42
文章分类

全部博文(414)

文章存档

2011年(1)

2009年(1)

2008年(412)

我的朋友

分类: Mysql/postgreSQL

2008-10-11 23:02:42

第五步

1:选择一种表类型 1.1静态myisam

这种格式是最简单且最安全的格式,它是磁盘格式中最快的.速度来自于数据能在磁盘上 被找到的难易程度.当锁定有一个索引和静态格式的东西是,它很简单,只是行长度乘以数量.而且在扫描一张表时,每次用磁盘读取来读入常数个记录是很容易 的.安全性来源于如果当写入一个静态myisam文件时导致计算机down掉,myisamchk很容易指出每行在哪里开始和结束,因此,它通常能收回所 有记录,除了部分被写入的记录.在mysql中所有索引总能被重建

1.2动态myisam

这种格式每一行必须有一个头说明它有多长.当一个记录在更改期间变长时,它可以在多 于一个位置上结束.能使用optimize tablename或myisamchk整理一张表.如果在同一个表中有像某些varchar或者blob列 那样存取/改变的静态数据,将动态列移入另外一个表以避免碎片.

1.2.1压缩myisam,用可选的myisampack工具生成

1.2.2内存

这种格式对小型/中型表很有用.对拷贝/创建一个常用的查找表到洋heap表有可能加快多个表联结,用同样数据可能要快好几倍时间.

select tablename.a,tablename2.a from tablename,tablanem2,tablename3 where

tablaneme.a=tablename2.a and tablename2.a=tablename3.a and tablename2.c!=0;

为了加速它,可以用tablename2和tablename3的联结创建一个临时表,因为用相同列(tablename1.a)查找.

CREATE TEMPORARY TABLE test TYPE=HEAP

SELECT

tablename2.a as a2,tablename3.a as a3

FROM

tablenam2,tablename3

WHERE

tablename2.a=tablename3.a and c=0;

SELECT tablename.a,test.a3 from tablename,test where tablename.a=test.a1;

SELECT tablename.a,test,a3,from tablename,test where tablename.a=test.a1 and ....;

1.3静态表的特点

1.3.1默认格式.用在表不包含varchar,blob,text列的时候 1.3.2所有的char,numeric和decimal列填充到列宽度

1.3.3非常快 1.3.4容易缓冲 1.3.5容易在down后重建,因为记录位于固定的位置

1.3.6不必被重新组织(用myisamchk),除非是一个巨量的记录被删除并且优化存储大小

1.3.7通常比动态表需要更多的存储空间 1.4动态表的特点 1.4.1如果表包含任何varchar,blob,text列,使用该格式

1.4.2所有字符串列是动态的 1.4.3每个记录前置一个位. 1.4.4通常比定长表需要更多的磁盘空间

1.4.5每个记录仅仅使用所需要的空间,如果一个记录变的很大,它按需要被分成很多段,这导致了记录碎片

1.4.6如果用超过行长度的信息更新行,行被分段. 1.4.7在系统down掉以后不好重建表,因为一个记录可以是多段

阅读(904) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~