[Linux-programlama] Re: ön muhasebe stok hesaplama
Merhaba komutunuzun onune explain yazarsaniz neden yavas oldugunu size aciklayacaktir. ancak ifnull yerine null ken sectiginizi bastan joinleyip sonra null olmasina gore toplalayarak yaparsaniz hizlanacaktir.diye dusunuyorum saygilarimla On October 20, 2017 11:18:49 PM GMT+03:00, ibrahim wrote: >Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde >çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu >çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi >? >sorguda hata mı yapıyorum ? > >SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT >> sum(urun_adet) FROM `ktgcari_000_fatura_xref` where >> product_id=ktgcari_000_stok.products_id and (type=1 or >> type=4)),0)-IFNULL((SELECT sum(urun_adet) FROM >`ktgcari_000_fatura_xref` >> where product_id=ktgcari_000_stok.products_id and (type=2 or >> type=5)),0)+IFNULL((SELECT sum(miktar) FROM ktgcari_000_ssayim where >> urun_id=ktgcari_000_stok.products_id),0) as 'Stok' FROM >ktgcari_000_stok >> LIMIT 0,1000 > > >(gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura >toplamı+giden >irsaliye toplamı)+(sayım fişi toplamı) > >Veritabanı Bilgileri: >stok kartı sayısı: 39000 >fatura sayısı: 545 >fatura içeriği tablosu kayıt sayısı: 1800 >sayım fişi sayısı: 942 >veritabanı büyüklüğü: 5 MB > >-- >-- >Saygılarımla, >İbrahim Halil -- Sent from my Android device with K-9 Mail. Please excuse my brevity.___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
merhaba, evet 39000 kayit icin 16 saniye cok uzun. sorgunuzun olabildigince sade olmasi lazim. ifnull gibi sub-select gibi seyler sorgunuzu cok ama cok yavaslatabilir. ayrica cekilen sorgu kartezyen carpimlara da sebep oluyordur (geereksiz yere ayni veriyi coklama). Ugur'un dedigi gibi, explain yardimci olacaktir. bunlardan baska, index olmayan alanlardan sorgulama yapiyorsunuzdur. bir de or keywordu de sikintidir, mumkunse kullanmayin. okudugum bir makalde or yerine union un daha efektif oldugu yaziyordu. 21 Ekim 2017 Cumartesi tarihinde, Ugur Dokmeci yazdı: > Merhaba komutunuzun onune explain yazarsaniz neden yavas oldugunu size > aciklayacaktir. ancak ifnull yerine null ken sectiginizi bastan joinleyip > sonra null olmasina gore toplalayarak yaparsaniz hizlanacaktir.diye > dusunuyorum > > saygilarimla > > On October 20, 2017 11:18:49 PM GMT+03:00, ibrahim > wrote: >> >> Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde >> çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu >> çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi ? >> sorguda hata mı yapıyorum ? >> >> SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT >>> sum(urun_adet) FROM `ktgcari_000_fatura_xref` where >>> product_id=ktgcari_000_stok.products_id and (type=1 or >>> type=4)),0)-IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` >>> where product_id=ktgcari_000_stok.products_id and (type=2 or >>> type=5)),0)+IFNULL((SELECT sum(miktar) FROM ktgcari_000_ssayim where >>> urun_id=ktgcari_000_stok.products_id),0) as 'Stok' FROM >>> ktgcari_000_stok LIMIT 0,1000 >> >> >> (gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura toplamı+giden >> irsaliye toplamı)+(sayım fişi toplamı) >> >> Veritabanı Bilgileri: >> stok kartı sayısı: 39000 >> fatura sayısı: 545 >> fatura içeriği tablosu kayıt sayısı: 1800 >> sayım fişi sayısı: 942 >> veritabanı büyüklüğü: 5 MB >> >> -- >> -- >> Saygılarımla, >> İbrahim Halil >> > > -- > Sent from my Android device with K-9 Mail. Please excuse my brevity. > -- İyi çalışmalar... Mustafa DUMLUPINAR https://github.com/seyhanp ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
Sorguda çok alt sorgu var, Dolayısı ile her alt sorgu zamanı artırdığı kanaatindeyim. Alt sorgular yerine view( MySQL de kullanılıyor mu bilmiyorum) kullanılması zamanı azaltabilir. İyi çalışmalar. Kimden: "ibrahim" Kime: "Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" Gönderilenler: 20 Ekim Cuma 2017 23:18:49 Konu: [Linux-programlama] ön muhasebe stok hesaplama Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi ? sorguda hata mı yapıyorum ? SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id=ktgcari_000_stok.products_id and (type=1 or type=4)),0)-IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id=ktgcari_000_stok.products_id and (type=2 or type=5)),0)+IFNULL((SELECT sum(miktar) FROM ktgcari_000_ssayim where urun_id=ktgcari_000_stok.products_id),0) as 'Stok' FROM ktgcari_000_stok LIMIT 0,1000 (gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura toplamı+giden irsaliye toplamı)+(sayım fişi toplamı) Veritabanı Bilgileri: stok kartı sayısı: 39000 fatura sayısı: 545 fatura içeriği tablosu kayıt sayısı: 1800 sayım fişi sayısı: 942 veritabanı büyüklüğü: 5 MB -- -- Saygılarımla, İbrahim Halil ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php -- SEZAYİ BUĞDAYCI Eti Maden İşletmeleri Genel Müd. Yön. Bil. Sis. Dai. Başkanı Ayvalı Mah. Halil Sezai Erkut Cad. Afra Sk. No 1/A 06010 Etlik-Keçiören/ANKARA Tel: +90(312) 294 21 52, (530) 693 34 36 e-posta: sbugda...@etimaden.gov.tr ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
benim dikkatimi ceken birsey var; normalde yazilim tarafinin yapmasi gereken seyleri neden db tarafina yaptirmissiniz. bu tur seyler faydadan cok zarar getirir. veritabanlari darbogazdir, calisma mantiklari basit kume teorilerine dayanir yani kompleks veri tipleri gibi islemler de sikintiya sebep olur. standart sql disinda birseyler yazmaya basliyorsaniz bir yerlerde hata vardi. bence bu tur yerleri duzeltmeden sorgularinizi elden gecirmeyin. performans adina, benim bir onceki calistigim yerde veritabaninda veriden baska birsey (view, function, stored procedure ve trigger...) buldurulmazdi. suanki isyerimde durum biraz daha sıkı; hiçbir sekilde join dahi kullanamiyoruz :) 22 Ekim 2017 Pazar tarihinde, SEZAYİ BUĞDAYCI yazdı: > Sorguda çok alt sorgu var, Dolayısı ile her alt sorgu zamanı artırdığı > kanaatindeyim. Alt sorgular yerine view( MySQL de kullanılıyor mu > bilmiyorum) kullanılması zamanı azaltabilir. > > İyi çalışmalar. > > -- > *Kimden: *"ibrahim" > > *Kime: *"Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" < > linux-programlama@liste.linux.org.tr > > > *Gönderilenler: *20 Ekim Cuma 2017 23:18:49 > *Konu: *[Linux-programlama] ön muhasebe stok hesaplama > > Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde > çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu > çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi ? > sorguda hata mı yapıyorum ? > > SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT >> sum(urun_adet) FROM `ktgcari_000_fatura_xref` where >> product_id=ktgcari_000_stok.products_id and (type=1 or >> type=4)),0)-IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` >> where product_id=ktgcari_000_stok.products_id and (type=2 or >> type=5)),0)+IFNULL((SELECT sum(miktar) FROM ktgcari_000_ssayim where >> urun_id=ktgcari_000_stok.products_id),0) as 'Stok' FROM ktgcari_000_stok >> LIMIT 0,1000 > > > (gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura toplamı+giden > irsaliye toplamı)+(sayım fişi toplamı) > > Veritabanı Bilgileri: > stok kartı sayısı: 39000 > fatura sayısı: 545 > fatura içeriği tablosu kayıt sayısı: 1800 > sayım fişi sayısı: 942 > veritabanı büyüklüğü: 5 MB > > -- > -- > Saygılarımla, > İbrahim Halil > > ___ > Linux-programlama mailing list > Linux-programlama@liste.linux.org.tr > > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > -- > *SEZAYİ BUĞDAYCI* > *Eti Maden İşletmeleri Genel Müd.* > Yön. Bil. Sis. Dai. Başkanı > > Ayvalı Mah. Halil Sezai Erkut Cad. > Afra Sk. No 1/A 06010 Etlik-Keçiören/ANKARA > Tel: +90(312) 294 21 52, (530) 693 34 36 > e-posta: sbugda...@etimaden.gov.tr > > -- İyi çalışmalar... Mustafa DUMLUPINAR https://github.com/seyhanp ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
şuan sql sorgumu aşağıdaki gibi yaparak 8 sn ye düşürdüm. ama yine yüksek bir gecikme en kötü ihtimalle stok kartı tablosuna miktar alanı açıp ekleme çıkarma sayım gibi hareketlerde miktarı güncellemeyi düşünüyorum. SELECT products_id as ID,prod_name as 'Ürün Adı',(SELECT IF(type=1 or > type=4,sum(urun_adet),0)-IF(type=2 or type=5,sum(urun_adet),0) FROM > `ktgcari_000_fatura_xref` where > product_id=ktgcari_000_stok.products_id)+IFNULL((SELECT sum(miktar) FROM > ktgcari_000_ssayim where urun_id=ktgcari_000_stok.products_id),0) as 'Stok' > FROM ktgcari_000_stok LIMIT 0,1000 22 Ekim 2017 18:41 tarihinde M.Dumlupinar yazdı: > benim dikkatimi ceken birsey var; > > normalde yazilim tarafinin yapmasi gereken seyleri neden db tarafina > yaptirmissiniz. bu tur seyler faydadan cok zarar getirir. > > veritabanlari darbogazdir, calisma mantiklari basit kume teorilerine > dayanir yani kompleks veri tipleri gibi islemler de sikintiya sebep olur. > > standart sql disinda birseyler yazmaya basliyorsaniz bir yerlerde hata > vardi. bence bu tur yerleri duzeltmeden sorgularinizi elden gecirmeyin. > > performans adina, benim bir onceki calistigim yerde veritabaninda veriden > baska birsey (view, function, stored procedure ve trigger...) buldurulmazdi. > > suanki isyerimde durum biraz daha sıkı; hiçbir sekilde join dahi > kullanamiyoruz :) > > > 22 Ekim 2017 Pazar tarihinde, SEZAYİ BUĞDAYCI > yazdı: > > Sorguda çok alt sorgu var, Dolayısı ile her alt sorgu zamanı artırdığı >> kanaatindeyim. Alt sorgular yerine view( MySQL de kullanılıyor mu >> bilmiyorum) kullanılması zamanı azaltabilir. >> >> İyi çalışmalar. >> >> -- >> *Kimden: *"ibrahim" >> *Kime: *"Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" < >> linux-programlama@liste.linux.org.tr> >> *Gönderilenler: *20 Ekim Cuma 2017 23:18:49 >> *Konu: *[Linux-programlama] ön muhasebe stok hesaplama >> >> Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde >> çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu >> çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi ? >> sorguda hata mı yapıyorum ? >> >> SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT >>> sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id= >>> ktgcari_000_stok.products_id and (type=1 or type=4)),0)-IFNULL((SELECT >>> sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id= >>> ktgcari_000_stok.products_id and (type=2 or type=5)),0)+IFNULL((SELECT >>> sum(miktar) FROM ktgcari_000_ssayim where >>> urun_id=ktgcari_000_stok.products_id),0) >>> as 'Stok' FROM ktgcari_000_stok LIMIT 0,1000 >> >> >> (gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura toplamı+giden >> irsaliye toplamı)+(sayım fişi toplamı) >> >> Veritabanı Bilgileri: >> stok kartı sayısı: 39000 >> fatura sayısı: 545 >> fatura içeriği tablosu kayıt sayısı: 1800 >> sayım fişi sayısı: 942 >> veritabanı büyüklüğü: 5 MB >> >> -- >> -- >> Saygılarımla, >> İbrahim Halil >> >> ___ >> Linux-programlama mailing list >> Linux-programlama@liste.linux.org.tr >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> -- >> *SEZAYİ BUĞDAYCI* >> *Eti Maden İşletmeleri Genel Müd.* >> Yön. Bil. Sis. Dai. Başkanı >> >> Ayvalı Mah. Halil Sezai Erkut Cad. >> Afra Sk. No 1/A 06010 Etlik-Keçiören/ANKARA >> Tel: +90(312) 294 21 52 <+90%20312%20294%2021%2052>, (530) 693 34 36 >> e-posta: sbugda...@etimaden.gov.tr >> > > > -- > İyi çalışmalar... > > Mustafa DUMLUPINAR > https://github.com/seyhanp > > > ___ > Linux-programlama mailing list > Linux-programlama@liste.linux.org.tr > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > -- -- Saygılarımla, İbrahim Halil KURTGÖZ PHP, MySQL, JAVA Geliştiricisi ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
bunu yapmayin. kalan miktar ve bakiye miktarlarini ayri tablolarda tutun. tanitim tabloları ozet bilgiler tutmamali. toplam miktarlar aylara, yillara, para birimlerine, depoya, cariye, stok birimine gore toplanip saklanirlar. bunu stok tanitimina koymak zor ve yanlış olur. 22 Ekim 2017 Pazar tarihinde, ibrahim yazdı: > şuan sql sorgumu aşağıdaki gibi yaparak 8 sn ye düşürdüm. ama yine yüksek > bir gecikme en kötü ihtimalle stok kartı tablosuna miktar alanı açıp ekleme > çıkarma sayım gibi hareketlerde miktarı güncellemeyi düşünüyorum. > > SELECT products_id as ID,prod_name as 'Ürün Adı',(SELECT IF(type=1 or >> type=4,sum(urun_adet),0)-IF(type=2 or type=5,sum(urun_adet),0) FROM >> `ktgcari_000_fatura_xref` where >> product_id=ktgcari_000_stok.products_id)+IFNULL((SELECT >> sum(miktar) FROM ktgcari_000_ssayim where >> urun_id=ktgcari_000_stok.products_id),0) >> as 'Stok' FROM ktgcari_000_stok LIMIT 0,1000 > > > > > > 22 Ekim 2017 18:41 tarihinde M.Dumlupinar > yazdı: > >> benim dikkatimi ceken birsey var; >> >> normalde yazilim tarafinin yapmasi gereken seyleri neden db tarafina >> yaptirmissiniz. bu tur seyler faydadan cok zarar getirir. >> >> veritabanlari darbogazdir, calisma mantiklari basit kume teorilerine >> dayanir yani kompleks veri tipleri gibi islemler de sikintiya sebep olur. >> >> standart sql disinda birseyler yazmaya basliyorsaniz bir yerlerde hata >> vardi. bence bu tur yerleri duzeltmeden sorgularinizi elden gecirmeyin. >> >> performans adina, benim bir onceki calistigim yerde veritabaninda veriden >> baska birsey (view, function, stored procedure ve trigger...) buldurulmazdi. >> >> suanki isyerimde durum biraz daha sıkı; hiçbir sekilde join dahi >> kullanamiyoruz :) >> >> >> 22 Ekim 2017 Pazar tarihinde, SEZAYİ BUĞDAYCI > > yazdı: >> >> Sorguda çok alt sorgu var, Dolayısı ile her alt sorgu zamanı artırdığı >>> kanaatindeyim. Alt sorgular yerine view( MySQL de kullanılıyor mu >>> bilmiyorum) kullanılması zamanı azaltabilir. >>> >>> İyi çalışmalar. >>> >>> -- >>> *Kimden: *"ibrahim" >>> *Kime: *"Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" < >>> linux-programlama@liste.linux.org.tr> >>> *Gönderilenler: *20 Ekim Cuma 2017 23:18:49 >>> *Konu: *[Linux-programlama] ön muhasebe stok hesaplama >>> >>> Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde >>> çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu >>> çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi ? >>> sorguda hata mı yapıyorum ? >>> >>> SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id= ktgcari_000_stok.products_id and (type=1 or type=4)),0)-IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id= ktgcari_000_stok.products_id and (type=2 or type=5)),0)+IFNULL((SELECT sum(miktar) FROM ktgcari_000_ssayim where urun_id=ktgcari_000_stok.products_id),0) as 'Stok' FROM ktgcari_000_stok LIMIT 0,1000 >>> >>> >>> (gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura >>> toplamı+giden irsaliye toplamı)+(sayım fişi toplamı) >>> >>> Veritabanı Bilgileri: >>> stok kartı sayısı: 39000 >>> fatura sayısı: 545 >>> fatura içeriği tablosu kayıt sayısı: 1800 >>> sayım fişi sayısı: 942 >>> veritabanı büyüklüğü: 5 MB >>> >>> -- >>> -- >>> Saygılarımla, >>> İbrahim Halil >>> >>> ___ >>> Linux-programlama mailing list >>> Linux-programlama@liste.linux.org.tr >>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >>> Liste kurallari: http://liste.linux.org.tr/kurallar.php >>> >>> -- >>> *SEZAYİ BUĞDAYCI* >>> *Eti Maden İşletmeleri Genel Müd.* >>> Yön. Bil. Sis. Dai. Başkanı >>> >>> Ayvalı Mah. Halil Sezai Erkut Cad. >>> Afra Sk. No 1/A 06010 Etlik-Keçiören/ANKARA >>> Tel: +90(312) 294 21 52 <+90%20312%20294%2021%2052>, (530) 693 34 36 >>> e-posta: sbugda...@etimaden.gov.tr >>> >> >> >> -- >> İyi çalışmalar... >> >> Mustafa DUMLUPINAR >> https://github.com/seyhanp >> >> >> ___ >> Linux-programlama mailing list >> Linux-programlama@liste.linux.org.tr >> >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> > > > -- > -- > Saygılarımla, > İbrahim Halil KURTGÖZ > PHP, MySQL, JAVA Geliştiricisi > -- İyi çalışmalar... Mustafa DUMLUPINAR https://github.com/seyhanp ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
- Bu tür soruların hap çözümünü hemen vermek kolay değil. Sorgudan önce tablo yapılarını, veri tabanı modellemesine bakmak sorunun daha net anlaşılmasını sağlar. Optimum çözümler onun üzerinden düşünülür. Burada daha çok genel olası şeyler önerilebilir. Öncelikle Open Source yazılımlarda bu tür VT yapısı nasıl oluşturulmuş , nasıl kodlar kullanılmış bakmakta fayda var. (İncelendiğini sanıyorum) - view, function, stored procedure ve trigger gibi veri tabanı araçlarının kullanmama kararı programcının tercihi olabilir. Ancak doğru yerinde doğru yapılandırılması, Programcıyı birçok kod yazmaktan kurtarır ve sağlam çalışır. Yanlış yapılanması ise VT yi germesine neden olabilir. Örneğin kayılardaki işlemlerin loglarını trigger ile yapmak en iyisidir. Trigger ile stok hesaplamak (Yine VT tasarımınıza bağlı olarak) doğru seçim olmaz. İyi çalışmalar. Kimden: "M.Dumlupinar" Kime: "Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" Gönderilenler: 22 Ekim Pazar 2017 18:41:56 Konu: [Linux-programlama] Re: ön muhasebe stok hesaplama benim dikkatimi ceken birsey var; normalde yazilim tarafinin yapmasi gereken seyleri neden db tarafina yaptirmissiniz. bu tur seyler faydadan cok zarar getirir. veritabanlari darbogazdir, calisma mantiklari basit kume teorilerine dayanir yani kompleks veri tipleri gibi islemler de sikintiya sebep olur. standart sql disinda birseyler yazmaya basliyorsaniz bir yerlerde hata vardi. bence bu tur yerleri duzeltmeden sorgularinizi elden gecirmeyin. performans adina, benim bir onceki calistigim yerde veritabaninda veriden baska birsey (view, function, stored procedure ve trigger...) buldurulmazdi. suanki isyerimde durum biraz daha sıkı; hiçbir sekilde join dahi kullanamiyoruz :) 22 Ekim 2017 Pazar tarihinde, SEZAYİ BUĞDAYCI < sbugda...@etimaden.gov.tr > yazdı: Sorguda çok alt sorgu var, Dolayısı ile her alt sorgu zamanı artırdığı kanaatindeyim. Alt sorgular yerine view( MySQL de kullanılıyor mu bilmiyorum) kullanılması zamanı azaltabilir. İyi çalışmalar. Kimden: "ibrahim" < ibrahim...@gmail.com > Kime: "Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" < linux-programlama@liste.linux.org.tr > Gönderilenler: 20 Ekim Cuma 2017 23:18:49 Konu: [Linux-programlama] ön muhasebe stok hesaplama Merhaba JAVA+MySQL(maria db) li bir ön muhasebe yazılımı üzerinde çalışıyorum.stok miktarını aşağıdaki sorgu ile hesaplıyorum ve sorguyu çalıştırdığımda sorgu süresi 16 sn alıyor. acaba sorgu süresi normal mi ? sorguda hata mı yapıyorum ? BQ_BEGIN SELECT products_id as ID,prod_name as 'Ürün Adı',IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id=ktgcari_000_stok.products_id and (type=1 or type=4)),0)-IFNULL((SELECT sum(urun_adet) FROM `ktgcari_000_fatura_xref` where product_id=ktgcari_000_stok.products_id and (type=2 or type=5)),0)+IFNULL((SELECT sum(miktar) FROM ktgcari_000_ssayim where urun_id=ktgcari_000_stok.products_id),0) as 'Stok' FROM ktgcari_000_stok LIMIT 0,1000 (gelen fatura toplamı+gelen irsaliye toplamı)-(giden fatura toplamı+giden irsaliye toplamı)+(sayım fişi toplamı) Veritabanı Bilgileri: stok kartı sayısı: 39000 fatura sayısı: 545 fatura içeriği tablosu kayıt sayısı: 1800 sayım fişi sayısı: 942 veritabanı büyüklüğü: 5 MB -- -- Saygılarımla, İbrahim Halil ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php -- SEZAYİ BUĞDAYCI Eti Maden İşletmeleri Genel Müd. Yön. Bil. Sis. Dai. Başkanı Ayvalı Mah. Halil Sezai Erkut Cad. Afra Sk. No 1/A 06010 Etlik-Keçiören/ANKARA Tel: +90(312) 294 21 52, (530) 693 34 36 e-posta: sbugda...@etimaden.gov.tr BQ_END -- İyi çalışmalar... Mustafa DUMLUPINAR https://github.com/seyhanp ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php -- SEZAYİ BUĞDAYCI Eti Maden İşletmeleri Genel Müd. Yön. Bil. Sis. Dai. Başkanı Ayvalı Mah. Halil Sezai Erkut Cad. Afra Sk. No 1/A 06010 Etlik-Keçiören/ANKARA Tel: +90(312) 294 21 52, (530) 693 34 36 e-posta: sbugda...@etimaden.gov.tr ___ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
[Linux-programlama] Re: ön muhasebe stok hesaplama
merhabalar, yanlış anlaşılmaması adına niyetimi en başta belirtmek istiyorum: söylediklerinizin doğruluk payı var Sezayi Bey fakat ben bazı kısmına katılmıyorum (lütfen eleştiriden ziyade faydalı bir tartışma olarak görün yazdıklarımı) > Bu tür soruların hap çözümünü hemen vermek kolay değil. kronikleşen sorunu zamanla yada incelemelerle çözemezsiniz, 39000 kayıt için 16 yada 8 saniye gibi kabul edilemeyecek süreleri ancak radikal ya da sizin deyiminizle hap çözümü şeklinde çözebilirsiniz. >Sorgudan önce tablo yapılarını, veri tabanı modellemesine bakmak sorunun daha net anlaşılmasını sağlar. "sonuç bu ise bir yerlerde hata olmalı, şunlara bakın..." diyerek ben de buna işaret etmiştim. >Öncelikle Open Source yazılımlarda bu tür VT yapısı nasıl oluşturulmuş ,nasıl kodlar kullanılmış bakmakta fayda var ben tam da bu konuda bir açık kaynak muhasebe sistemi yazdım ve bir başkasının benim tablo yapılarımı inceleyerek kendi sistemindeki sorunları çözebileceğini pek sanmıyorum. veri yapılarını incelemek isterseniz : https://github.com/seyhanp/seyhan/tree/master/conf/evolutions evet bu projede de veri tablolarından başka birşey kullanılmadı >view, function, stored procedure ve trigger gibi veri tabanı araçlarının kullanmama kararı programcının tercihi olabilir. evet haklısınız fakat ben (nosql olanlar hariç) mysql, sql-server, oracle, pgsql... gibi yaygın olarak kullanılan veritabanlarının ilişkisel veritabanları olduğunu kabul ederek sadece verilerimi ilişkiler belirleyerek kullanmaya çalışıyorum bu yaklaşımım (günlük milyon hatta bazı durumlarda milyar istek durumunda) veritabanı darboğazlarını aşmamı sağladığı gibi istediğim zaman çok da zorlanmadan veritabanını değiştirmem sağlıyor (her ne kadar olmasa da, olabilme ihtimali var) sonuçta; trigger, stored procedure, view, function, standart sql de olmayan db ye has özel komutlar... gibi şeyler kesinlikle faydalı şeyler fakat her birinin getirdiği ek bir maliyet, yük ya da çekince / kısıtlama var. proje yapısı, kullanıcı sayısı, veri yoğunluğu, veritabanının değişime olan dirence, projenin open/closed source olup olmayacağı... gibi etkenler seçimlerimizi belirliyor. daha önce de yazdığım gibi; ben (ve çalıştığım projedeki insanlar) veritabanını sadece ilişkisel veriler için kullanıyoruz. trigger, stored procedure, view, function, standart sql de olmayan db ye has özel komutlar... gibi şeyleri kullanmak yanlıştır, aman ha kullanmayın demiyorum. bana göre sıkıntılı şeyler ve baş ağrıtabilir diyorum sadece. 2017-10-23 8:44 GMT+03:00 SEZAYİ BUĞDAYCI : > - Bu tür soruların hap çözümünü hemen vermek kolay değil. Sorgudan önce > tablo yapılarını, veri tabanı modellemesine bakmak sorunun daha net > anlaşılmasını sağlar. > Optimum çözümler onun üzerinden düşünülür. Burada daha çok genel olası > şeyler önerilebilir. Öncelikle Open Source yazılımlarda bu tür VT yapısı > nasıl oluşturulmuş , > nasıl kodlar kullanılmış bakmakta fayda var. (İncelendiğini sanıyorum) > - view, function, stored procedure ve trigger gibi veri tabanı > araçlarının kullanmama kararı programcının tercihi olabilir. Ancak doğru > yerinde doğru yapılandırılması, > Programcıyı birçok kod yazmaktan kurtarır ve sağlam çalışır. Yanlış > yapılanması ise VT yi germesine neden olabilir. Örneğin kayılardaki > işlemlerin loglarını trigger ile yapmak en iyisidir. > Trigger ile stok hesaplamak (Yine VT tasarımınıza bağlı olarak) doğru > seçim olmaz. > > > İyi çalışmalar. > > > > > -- > *Kimden: *"M.Dumlupinar" > *Kime: *"Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" < > linux-programlama@liste.linux.org.tr> > *Gönderilenler: *22 Ekim Pazar 2017 18:41:56 > *Konu: *[Linux-programlama] Re: ön muhasebe stok hesaplama > > benim dikkatimi ceken birsey var; > normalde yazilim tarafinin yapmasi gereken seyleri neden db tarafina > yaptirmissiniz. bu tur seyler faydadan cok zarar getirir. > > veritabanlari darbogazdir, calisma mantiklari basit kume teorilerine > dayanir yani kompleks veri tipleri gibi islemler de sikintiya sebep olur. > > standart sql disinda birseyler yazmaya basliyorsaniz bir yerlerde hata > vardi. bence bu tur yerleri duzeltmeden sorgularinizi elden gecirmeyin. > > performans adina, benim bir onceki calistigim yerde veritabaninda veriden > baska birsey (view, function, stored procedure ve trigger...) buldurulmazdi. > > suanki isyerimde durum biraz daha sıkı; hiçbir sekilde join dahi > kullanamiyoruz :) > > > 22 Ekim 2017 Pazar tarihinde, SEZAYİ BUĞDAYCI > yazdı: > >> Sorguda çok alt sorgu var, Dolayısı ile her alt sorgu zamanı artırdığı >> kanaatindeyim. Alt sorgular yerine view( MySQL de kullanılıyor mu >> bilmiyorum) kullanılması zamanı azaltabilir. >> >> İyi çalışmalar. >> >> -- &g
[Linux-programlama] Re: ön muhasebe stok hesaplama
Aynı sorguyu kullanarak, sorgumdaki 2 alt sorguda kullandığım tabloların "products_id" alanına index ekledim. sorgu süresi 0.0139 sn ye düştü. cevap yazan arkadaşlara çok teşekkür ederim. <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virüs bulunmuyor. www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> 23 Ekim 2017 10:09 tarihinde M.Dumlupinar yazdı: > merhabalar, > > yanlış anlaşılmaması adına niyetimi en başta belirtmek istiyorum: > söylediklerinizin doğruluk payı var Sezayi Bey fakat ben bazı kısmına > katılmıyorum (lütfen eleştiriden ziyade faydalı bir tartışma olarak görün > yazdıklarımı) > > > Bu tür soruların hap çözümünü hemen vermek kolay değil. > kronikleşen sorunu zamanla yada incelemelerle çözemezsiniz, 39000 kayıt > için 16 yada 8 saniye gibi kabul edilemeyecek süreleri ancak radikal ya da > sizin deyiminizle hap çözümü şeklinde çözebilirsiniz. > > >Sorgudan önce tablo yapılarını, veri tabanı modellemesine bakmak sorunun > daha net anlaşılmasını sağlar. > "sonuç bu ise bir yerlerde hata olmalı, şunlara bakın..." diyerek ben de > buna işaret etmiştim. > > >Öncelikle Open Source yazılımlarda bu tür VT yapısı nasıl oluşturulmuş > ,nasıl kodlar kullanılmış bakmakta fayda var > ben tam da bu konuda bir açık kaynak muhasebe sistemi yazdım ve bir > başkasının benim tablo yapılarımı inceleyerek kendi sistemindeki sorunları > çözebileceğini pek sanmıyorum. > veri yapılarını incelemek isterseniz : https://github.com/seyhanp/ > seyhan/tree/master/conf/evolutions > evet bu projede de veri tablolarından başka birşey kullanılmadı > > >view, function, stored procedure ve trigger gibi veri tabanı araçlarının > kullanmama kararı programcının tercihi olabilir. > evet haklısınız fakat ben (nosql olanlar hariç) mysql, sql-server, oracle, > pgsql... gibi yaygın olarak kullanılan veritabanlarının ilişkisel > veritabanları olduğunu kabul ederek sadece verilerimi ilişkiler > belirleyerek kullanmaya çalışıyorum > bu yaklaşımım (günlük milyon hatta bazı durumlarda milyar istek durumunda) > veritabanı darboğazlarını aşmamı sağladığı gibi istediğim zaman çok da > zorlanmadan veritabanını değiştirmem sağlıyor (her ne kadar olmasa da, > olabilme ihtimali var) > > sonuçta; trigger, stored procedure, view, function, standart sql de > olmayan db ye has özel komutlar... gibi şeyler kesinlikle faydalı şeyler > fakat her birinin getirdiği ek bir maliyet, yük ya da çekince / kısıtlama > var. proje yapısı, kullanıcı sayısı, veri yoğunluğu, veritabanının değişime > olan dirence, projenin open/closed source olup olmayacağı... gibi etkenler > seçimlerimizi belirliyor. daha önce de yazdığım gibi; ben (ve çalıştığım > projedeki insanlar) veritabanını sadece ilişkisel veriler için > kullanıyoruz. > > trigger, stored procedure, view, function, standart sql de olmayan db ye > has özel komutlar... gibi şeyleri kullanmak yanlıştır, aman ha kullanmayın > demiyorum. bana göre sıkıntılı şeyler ve baş ağrıtabilir diyorum sadece. > > > > 2017-10-23 8:44 GMT+03:00 SEZAYİ BUĞDAYCI : > >> - Bu tür soruların hap çözümünü hemen vermek kolay değil. Sorgudan önce >> tablo yapılarını, veri tabanı modellemesine bakmak sorunun daha net >> anlaşılmasını sağlar. >> Optimum çözümler onun üzerinden düşünülür. Burada daha çok genel olası >> şeyler önerilebilir. Öncelikle Open Source yazılımlarda bu tür VT yapısı >> nasıl oluşturulmuş , >> nasıl kodlar kullanılmış bakmakta fayda var. (İncelendiğini sanıyorum) >> - view, function, stored procedure ve trigger gibi veri tabanı >> araçlarının kullanmama kararı programcının tercihi olabilir. Ancak doğru >> yerinde doğru yapılandırılması, >> Programcıyı birçok kod yazmaktan kurtarır ve sağlam çalışır. Yanlış >> yapılanması ise VT yi germesine neden olabilir. Örneğin kayılardaki >> işlemlerin loglarını trigger ile yapmak en iyisidir. >> Trigger ile stok hesaplamak (Yine VT tasarımınıza bağlı olarak) doğru >> seçim olmaz. >> >> >> İyi çalışmalar. >> >> >> >> >> -- >> *Kimden: *"M.Dumlupinar" >> *Kime: *"Özgür yazılımlarla çeşitli dillerde yazılım geliştirme" < >> linux-programlama@liste.linux.org.tr> >> *Gönderilenler: *22 Ekim Pazar 2017 18:41:56 >> *Konu: *[Linux-programlama] Re: ön muhasebe stok hesaplama >> >> benim dikkatimi ceken birsey var; >> normalde yazilim tarafinin yapmasi gereken seyleri neden db tarafina >> yaptirmissiniz. bu tur seyler faydadan c