Forum ini untuk laporan bugs / eror program dan lain-lain
harisby
 
Posts: 24
Joined: 29 Sep 2015 15:59

Optimize Graylite

by harisby 29 Aug 2018 09:18

Setelah implement cutoff persediaan di DB_KMPSMG, beberapa hal saya temukan yang bisa di-optimize.
Semua implementator harus melakukan optimize yang sama pada semua database para kliennya.

1. Do not insert into Journal Accounting with value zero
Di DB_KMPSMG, total record di Journal Accounting: 1 juta.
Total record dgn gl_value = nol: 130 ribu!
Kebanyakan dari jurnal otomatis SI & SR, contohnya pos Discount Penjualan yang selalu nol.

Implementasi:
Modifikasi sp jurnal-jurnal otomatis, cek value tidak nol tiap kali sebelum insert.
Code: Select all
IF @value <> 0
BEGIN
INSERT INTO accounting.[Journal.Detail]
...
END


Note:
Perhatikan kolom gl_idx! harus di-modify supaya urutan tetap terjaga.


2. Gunakan Jurnal Persediaan Global
Jurnal Persediaan tidak lagi detail per dokumen per barang, dan tanpa subcode.
Jurnal Persediaan bersifat global bulanan.
Kecuali PI & PR, Jurnal Persediaan dibuat per dokumen, satu baris saja tanpa subcode.

Di DB_KMPSMG, total record di Journal Accounting: 1 juta.
Total record pos persediaan: 480 ribu :shock:
Setelah melakukan langkah ini, record persediaan hanya 40 record per bulan!

Implementasi:
Lihat Topic BARUJAYA, implementasi metode persediaan baru


3. Modifikasi sp accounting.[COGS.generate]
Di DB_KMPSMG, semula saat user menjalankan sp ini, selalu time-out.
Sp ini membutuhkan waktu sekitar 30 detik.
Setelah di-optimize, hanya butuh waktu 5-10 detik saja.

Implementasi:
Optimize algorithm untuk bagian FIFO.
Semula menggunakan CURSOR, looping per item & per histori COGS.
Sekarang di-rewrite dgn menggunakan COMMON TABLE EXPRESSION (CTE) dan beberapa windows function.

Untuk jelasnya, lihat di DB_KMPSMG, ada 2 sp:
accounting.[COGS.generate]
accounting.[COGS.generate.FIFO]
Return to Report Bug / Error here

Who is online

Users browsing this forum: No registered users and 1 guest