Membandingkan pengurusan pertanyaan lambat MySQL dalam hubungan terperinci induk antara dua jadual: panduan langkah demi langkah
P粉724256860
P粉724256860 2023-09-13 16:56:06
0
1
402

Tolong bantu saya.. Saya mempunyai pertanyaan seperti berikut: Berikut adalah jadual:

  1. pesanan_hantaran
  2. barang_pesanan_hantaran
  3. bst
  4. bst_item

Saya nak paparkan item yang ada dalam delivery_order/item table tapi bukan dalam bst/item table, compare based on KODE_BARANG dan JUMLAH.

Saya mempunyai pernyataan pertanyaan berikut, tetapi ia masih sangat perlahan jika sudah terdapat banyak data (bahagian yang perlahan adalah membandingkan baris KODE_BARANG). Saya ingin bertanya sama ada rakan saya mempunyai situasi yang sama dan bagaimana untuk menyelesaikannya? Terima kasih terlebih dahulu, harap ada yang sudi menjawab.

SELECT del.KODE_DO, deli.KODE_BARANG, deli.NAMA_BARANG, deli.JUMLAH, deli.SATUAN, @DITERIMA := COALESCE (( SELECT SUM( JUMLAH ) FROM bst_item WHERE KODE_PENERIMAAN = deli.KODE_DO AND KODE_BARANG = deli.KODE_BARANG #这行使它变慢 AND `STATUS` <> 0),0) AS DITERIMA, COALESCE ( deli.JUMLAH, 0 ) - @DITERIMA AS SISA FROM delivery_order del INNER JOIN delivery_order_item deli ON del.KODE_DO = deli.KODE_DO WHERE DATE(del.TANGGAL) >= :TGL1 AND DATE(del.TANGGAL) <= :TGL2 AND COALESCE ( deli.JUMLAH, 0 ) - COALESCE (( SELECT SUM( JUMLAH ) FROM bst_item WHERE KODE_PENERIMAAN = deli.KODE_DO AND KODE_BARANG = deli.KODE_BARANG #这行使它变慢 AND `STATUS` <> 0),0) > 0
SELECT del.KODE_DO, deli.KODE_BARANG, deli.NAMA_BARANG, deli.JUMLAH, deli.SATUAN, @DITERIMA := COALESCE (( SELECT SUM( JUMLAH ) FROM bst_item WHERE KODE_PENERIMAAN = deli.KODE_DO AND KODE_BARANG = deli.KODE_BARANG #这行使它变慢 AND `STATUS` <> 0),0) AS DITERIMA, COALESCE ( deli.JUMLAH, 0 ) - @DITERIMA AS SISA FROM delivery_order del INNER JOIN delivery_order_item deli ON del.KODE_DO = deli.KODE_DO WHERE DATE(del.TANGGAL) >= :TGL1 AND DATE(del.TANGGAL) <= :TGL2 AND COALESCE ( deli.JUMLAH, 0 ) - COALESCE (( SELECT SUM( JUMLAH ) FROM bst_item WHERE KODE_PENERIMAAN = deli.KODE_DO AND KODE_BARANG = deli.KODE_BARANG #这行使它变慢 AND `STATUS` <> 0),0) > 0

P粉724256860
P粉724256860

membalas semua (1)
P粉652523980
INDEX(KODE_PENERIMAAN, KODE_BARANG, `STATUS`)

Dan jangan sembunyikan TANGGAL dalam panggilan fungsi. (rujuk "boleh sargable")

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!