t1表结构:
uid fid ftype timestring
primary key(uid,fid);
目前要将t1表中的数据一条一条地写到t2表中:
t2表结构:
uid fid ftype dual
primary key(uid,fid);
1. 我们暂且不考虑通过处理文件的方式来导数据,只研究一条一条地该怎么做
2. 因为t2中需要t1中的ftype,为了不需要访问t1表的数据文件,可以将t1的主键重建为:
primary key(uid,fid,ftype);
3. 因为t1的数据量很大(1000万吧),所以需要分部分读取,然后处理,分部分的方法有两种:
a.
for($i = 0; $i< 127; $i++) {
…
$sql = "select * from t1 where mod(uid,127) = $i";
…
}
b.
$i = 10000;
$start = 0;
while($i == 10000) {
…
$sql = "select * from t1 where uid > $start order by uid limit 10000";
$result = mysql_query($sql);
…
$cntDealed = count($result);
$start += $cntDealed;
…
}
4.
第一种办法计算量大一些,每次要遍历所有的数据,但是不需要排序
第二种办法需要处理的数据量越来越少,速度越来越快,但是做了一些不太必要的排序操作
5. 如果我们的操作90%的情况下需要除主键外的某一个字段,而且这个字段很小,为了提高查询速度,可以考虑将该字段添加到逐渐里面去,尽管他逻辑上可以不是主键。