绘图:我有一个带有2个数据库的PAD网站:submitdata和maindata。
submitdata DB将所有列作为maindata DB加上另外3列:
主数据列:名称链接电子邮件网站。。。。程序ID
提交数据列:名称链接电子邮件网站。。。。程序ID,反向链接,附属ID
我必须将所有行从submitdata DB移动到maindata DB,但前提是反向链接!=''如果是附属的!=附属于。
另一个问题是如果progid在maindata数据库中已经准备好了,在这种情况下,我必须用新的数据更新该行
... 另一个问题是我有大约40000行,所以从submitdata中选择*可能会杀死我的计算机。
在PHP中如何做到这一点?
最佳答案
试试这个:
EXPLAIN SELECT * FROM submitdata;
也许它会告诉您可以为哪些字段提供索引(这会大大加快查询时间)。然后,如果不移动backlink和affiliateid字段为空的记录,则可以通过添加
WHERE
子句来减少查询的结果集。$result = mysql_query('SELECT * FROM submitdata WHERE backlink <> "" AND affiliateid <> ""');
if ($result) {
while ($row = mysql_fetch_assoc($result)) {
$newResult = mysql_query(sprintf('SELECT name,progid FROM maindata WHERE progid = %d', $row['progid']));
$row2 = mysql_fetch_row($newResult);
if ($row2) {
// do UPDATE query
} else {
// do INSERT query
}
}
}