遍历表导数据的一些方法

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%的情况下需要除主键外的某一个字段,而且这个字段很小,为了提高查询速度,可以考虑将该字段添加到逐渐里面去,尽管他逻辑上可以不是主键。

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据