cari

Rumah  >  Soal Jawab  >  teks badan

php - Apakah yang perlu saya lakukan jika UPDATE menggunakan subquery untuk mengemas kini lajur?

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

大家讲道理大家讲道理2812 hari yang lalu792

membalas semua(4)saya akan balas

  • 漂亮男人

    漂亮男人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

    balas
    0
  • 習慣沉默

    習慣沉默2017-06-05 11:11:33

    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;

      balas
      0
  • 某草草

    某草草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

    balas
    0
  • ringa_lee

    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;

    balas
    0
  • Batalbalas