java - 从mysql中查询数据,然后插入到另一个数据库中,怎样提升这个代码的运行速度
巴扎黑
巴扎黑 2017-04-17 17:51:11
0
2
623

我从mysql中查询数据,然后将查询到的数据插入到另一个数据库中,目前速度查询5000个并插入的速度大概在45秒到200秒之间。怎样可以提升它的速度。
这条sql本身的执行时间在numiid很多的时候或者表中数据较多的时候就较慢,有时在1.6秒以上
sql:
select ir.id,iss.numIid,iss.bid,b.bname as bT,iss.cid,c.name as cT,iss.userId ,ss.shopTitle,iss.title as itemTitle,ir.type,ir.page,if(count(keyword) is null,0,count(keyword)) keywordCount1,IF(k.ssrq is null, 0,sum(k.ssrq )) ssrqCount1,if(iss.sales!=-1,iss.sales,IF(iss.trades!=-1,iss.trades,iss.receivers)) salesCount1

    from table iss
    inner join table0  ir  on iss.numIid=ir.numIid
    <if test="type != null"> and ir.type =#{type}</if> 
    <if test="type == null"> and ir.type in (1,2,3,4,11,12,13,21,22,31,32)</if>
    <if test="page != null"> and ir.page =#{page}</if> 
    <if test="page == null"> and ir.page in(1,2,3,4,5,6,7,8,9,10) </if> 
    left join table1_${batchId} k on ir.keyword =k.id
    left join table2_${batchId} ss on ss.userId =iss.userId
    left join table3  b  on iss.bid=b.bid 
    left join table4  c  on iss.cid=c.id
    where iss.numIid  in (
        <foreach collection="numIids" item="numIid" separator=",">
          #{numIid}
        </foreach>
    )
    group by iss.numIid,ir.page,ir.type
巴扎黑
巴扎黑

membalas semua(2)
大家讲道理

Jangka masa dari 45 saat hingga 200 saat adalah besar.
1. SQL yang anda tulis terlalu rumit Adalah disyorkan untuk memudahkan SQL dan melaksanakan sebahagian daripada pemprosesan logik dalam kod.
2. Simpan ke pangkalan data lain dan pertimbangkan penyerahan kelompok.

大家讲道理

1. Langkah pertama pertanyaan adalah untuk melihat sama ada terdapat ruang untuk pengoptimuman.
2. Bolehkah anda menyiarkan pseudokod logik sisipan anda. Saya tidak tahu cara anda melakukan operasi sisipan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan