作者:风未起时
来源:中国站长学院
热度:
2007-3-20 14:33:44
7优化update的速度
它的速度依赖于被更新数据的大小和被更新索引的数量
使update更快的另一个方法是推迟修改,然后一行一行的做很多修改.如果锁定表,做一行一行的很多修改比一次做一个快
8优化delete速度
删除一个记录的时间与索引数量成正比.为了更快的删除记录,可以增加索引缓存的大小
从一个表删除所有行比删除这个表的大部分要快的多
第五步
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 ....;
我来说两句: