0

あるテーブルから別のテーブルに約 7000 レコードをコピーするようにコードを最適化しようとしています。

SQLQuery1->Open();

while (!SQLQuery1->Eof)
    {
     Table1->Append();
       Table1->FieldByName("terc1_cod")->Value = SQLQuery1->FieldByName("terc1_cod")->Value;
       Table1->FieldByName("terc1_nome1")->Value = SQLQuery1->FieldByName("terc1_nome1")->Value;
       Table1->FieldByName("terc1_nome2")->Value = SQLQuery1->FieldByName("terc1_nome2")->Value;
       Table1->FieldByName("terc1_morada")->Value = SQLQuery1->FieldByName("terc1_morada")->Value;
       Table1->FieldByName("terc1_local")->Value = SQLQuery1->FieldByName("terc1_local")->Value;
       Table1->FieldByName("cdpst_cod")->Value = SQLQuery1->FieldByName("cdpst_cod")->Value;
       Table1->FieldByName("terc1_nctrb")->Value = SQLQuery1->FieldByName("terc1_nctrb")->Value;
       Table1->FieldByName("conc_descr1")->Value = SQLQuery1->FieldByName("conc_descr1")->Value;
       Table1->FieldByName("freg_descr1")->Value = SQLQuery1->FieldByName("freg_descr1")->Value;
       Table1->FieldByName("terc1_telef")->Value = SQLQuery1->FieldByName("terc1_telef")->Value;
       Table1->FieldByName("terc1_telefax")->Value = SQLQuery1->FieldByName("terc1_telefax")->Value;
       Table1->FieldByName("terc1_email")->Value = SQLQuery1->FieldByName("terc1_email")->Value;
       Table1->FieldByName("terc1_estado")->Value = SQLQuery1->FieldByName("terc1_estado")->Value;
       Table1->FieldByName("alfa01")->Value = SQLQuery1->FieldByName("alfa01")->Value;
     Table1->Post();
     SQLQuery1->Next();
     ProgressBar1->StepIt();
    }    
    SQLQuery1->Close();

SQLQuery1 は ODBC への DBX 接続であり、Table1 は Mysql DB です。これには、7000 行をコピーするのに約 3 分かかります。どうすればスピードアップできますか?

4

1 に答える 1

0

これらのコンポーネントを使用してから長い時間が経ちましたが、以前は次のような方法で作業していました。

qryOracle->SQL->Clear();
qryOracle->SQL->Add( "select * from " + sSrcTable; );
qryOracle->Prepare();
qryOracle->Open();

tblDest->TableName = "whatever";
tblDest->BatchMove( frmData->sqlQ, batCopy );
于 2013-03-01T20:58:12.667 に答える