php - Apakah yang perlu saya lakukan jika UPDATE menggunakan subquery untuk mengemas kini lajur?
大家讲道理
大家讲道理 2017-06-05 11:09:33
0
4
770

Perlaksanaan SQL berikut terlalu perlahan, bagaimanakah saya harus mengoptimumkannya?

 UPDATE AA A
     SET COL1 =
         (SELECT B.COL2
            FROM BB B
           WHERE B.BH = A.BH
           AND B.YEAR = '2016-2017'
           )
 WHERE A.YEAR = '2017-2018';

Antaranya, meja AA dan meja BB adalah sama iaitu satu meja

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(4)
漂亮男人

Saya tidak begitu faham,
Oleh kerana ia adalah langkah yang sama, cuma
kemas kini set jadual lajur 1 = lajur 2 di mana keadaan
dan itu sahaja

習慣沉默
  1. Buat jadual baharu berdasarkan nilai baharu, kemudian gabungkan kedua-dua jadual, dan akhirnya padamkan jadual sementara;

  2. Buat transaksi, tulis semua kemas kini ke dalamnya, dan akhirnya beri komitmen;

某草草

Apa yang saya tidak faham ialah sama ada AA dan BB adalah satu jadual atau dua jadual
Jika satu jadual, kaedah @prolifes boleh digunakan
Jika dua jadual,
update AA a, BB b set a .col1 = b. col2 di mana a.bh = b.bh dan a.year='2017-2018' dan b.year='2016-2017',
Selain itu, kelambatan adalah berkaitan dengan saiz data anda dan index, saya cuma bagi A general method, sejauh mana keberkesanannya, kena cuba sendiri

左手右手慢动作

Terima kasih atas cadangan anda Akhirnya, saya menggunakan yang di Internet, yang lebih cekap sedikit:
Oracle mempunyai dua kaedah:
Kemas kini paparan sebaris

update (
 
    select t1.id t1id ,t1.nickname t1nickname,t1.playNum t1playnum,t2.id t2id ,t2.nickname t2nickname,t2.playNum t2playnum

    from t1 inner join t2 on (t1.id=t2.id)

)

set t1nickname=t2nickname,t1playnum=t2playnum;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan