加速MSSQL到MySQL插入

时间:2017-08-08 18:25:29

标签: mysql sql sql-server

我有这个,它工作正常,但需要13分钟才能完成,有没有办法加快速度。

insert into openquery(portal, 'select
  klient_id,
  smetka_br,
  smetka_datum,
  smetka_izdadena_datum,
  smetka_platena_datum,
  smetka_int_cena,
  smetka_tv_cena,
  smetka_dtv_cena,
  mesto_uplata,
    platena_tv,
    platena_int,
    platena_dtv,
    datum_tv,
    datum_int,
    datum_dtv from smetki_data_temp')
select
    a.klient_id, a.barcode, a.datum_valuta, a.promena_datum, b.datum_uplata, a.iznos_INT, a.iznos_KDS, a.iznos_DTV, a.zabeleska,
    a.platena_KDS, a.platena_INT, a.platena_DTV,
    (Cast(godina_KDS as VARCHAR) + '-' + Cast(mesec_KDS as VARCHAR) + '-01') as datum_tv,
    (Cast(godina_INT as VARCHAR) + '-' + Cast(mesec_INT as VARCHAR) + '-01') as datum_int,
    (Cast(godina_DTV as VARCHAR) + '-' + Cast(mesec_DTV as VARCHAR) + '-01') as datum_dtv
    from tSmetki as a
    INNER JOIN tUplati as b on b.smetka_id = a.id
    where a.barcode != ''

有近2密耳的行。选择需要30秒才能完成。插入需要12分钟。

   Affected rows: 1905280
    Time: 751.330s

1 个答案:

答案 0 :(得分:0)

如@Dan Bracuk所述,使用INSERT更新200万行构建索引并检查约束,这可能(并且确实)减慢很多。 我的建议,只是为了确保策略是正确的,制作一个

的脚本
  • 删除已插入表格上的所有索引
  • 执行大量插入
  • 在插入的表上创建索引

作为第一步,不要篡改约束,也不要触摸其他任何东西。查看是否有执行时间改进。希望这会有所帮助。