[Linux-programlama] Re: ön muhasebe stok hesaplama

2017-10-24 Başlik ibrahim
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_source=link_campaign=sig-email_content=webmail>
Virüs
bulunmuyor. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email_source=link_campaign=sig-email_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

23 Ekim 2017 10:09 tarihinde M.Dumlupinar <mdumlupi...@gmail.com> 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 <sbugda...@etimaden.gov.tr>:
>
>> - 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" <mdumlupi...@gmail.com>
>> *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
&g

[Linux-programlama] Re: ön muhasebe stok hesaplama

2017-10-23 Başlik M.Dumlupinar
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 <sbugda...@etimaden.gov.tr>:

> - 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" <mdumlupi...@gmail.com>
> *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 <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ı zam

[Linux-programlama] Re: ön muhasebe stok hesaplama

2017-10-22 Başlik 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" <mdumlupi...@gmail.com> 
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 < 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

2017-10-22 Başlik M.Dumlupinar
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: 

[Linux-programlama] Re: ön muhasebe stok hesaplama

2017-10-22 Başlik ibrahim
ş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

2017-10-22 Başlik M.Dumlupinar
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

2017-10-22 Başlik SEZAYİ BUĞDAYCI
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

2017-10-21 Başlik M.Dumlupinar
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

2017-10-20 Başlik Ugur Dokmeci
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