如何加快在不同MySql服务器上的跨搜索?
问题描述:
我有以下问题。经典的ASP应用程序需要访问两个不同的mysql服务器(不同的远程位置,通过网络通过IP访问)上的2个不同的数据库(表)。我们的目标是从第一台服务器上的第一个数据库表中创建符合条件的所有记录(创建一个记录集),然后在这些记录中选择那些与(至少)一条记录的IdCode匹配的IdCode从第二台服务器上的数据库表中,再加上第三个条件以在第二张表中匹配。 我有一个简单的(愚蠢)的方式来做到这一点是:如何加快在不同MySql服务器上的跨搜索?
strSQL = "SELECT * FROM Serv1_Table1 WHERE condition1 AND condition2;"
SET rs = conn1.Execute(strSQL)
DO WHILE NOT rs.EOF
strSQL = "SELECT IdCode FROM Serv2_Table2 WHERE IdCode=" & rs("IdCode") & " AND condition3 LIMIT 1;"
SET rs2 = conn2.Execute (strSQL)
IF NOT rs2.EOF THEN
call operation_to_do (using rs recordset)
END IF
rs.movenext
LOOP
这工作得很好,但相当缓慢(每两台服务器的工作了几千条记录)。我想找到的是在这种情况下更有效,快捷地做到这一点。任何意见或建议? 非常感谢。
答
我建议不要在你的第一个SELECT中使用*。你不需要那里的所有领域。而是只使用IdCode。
将IdCode插入到第二台服务器上的一个新的(临时存储器)表中,并使用连接一次从第二台服务器中选择数据。 –
对不起,但我不明白。我应该为第一个记录集中的每个IdCode插入一个新表吗?这样,它会持续更多,我猜... – Lawrence
我想知道是否有可能对选定的记录集进行搜索操作。如果是的话,我可以从第二个服务器创建第二个记录集,仅使用“第三个条件”,然后在内存中的这个记录集中搜索是否从第一个记录集中找到每个IdCode!但我不知道如何在ASP/ADO中执行此操作... – Lawrence