Rumah > Soal Jawab > teks badan
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
漂亮男人2017-06-05 11:11:33
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
習慣沉默2017-06-05 11:11:33
Buat jadual baharu berdasarkan nilai baharu, kemudian gabungkan kedua-dua jadual, dan akhirnya padamkan jadual sementara;
Buat transaksi, tulis semua kemas kini ke dalamnya, dan akhirnya beri komitmen;
某草草2017-06-05 11:11:33
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
ringa_lee2017-06-05 11:11:33
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;