folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder SQL Sorgusu - Altında Kayıt Olan Veriler



SQL Sorgusu - Altında Kayıt Olan Veriler

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek

    select * from Kategori where id in (select distinct kat_id from Urunler)

    Ürünlerde aktif pasif durumu varsa onuda sorguya ekleyebilirsin hocam

    select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1) gibi

    Yazilimci tarafından 05/Nis/17 11:57 tarihinde düzenlenmiştir

    Titanyumun gücü adına!!!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    _DevLop_
    _DevLop_'s avatar
    Kayıt Tarihi: 17/Ağustos/2015
    Erkek
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı

    select k.* 

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    Bu istediği sonucu vermiyorsa ya ben anlayamadım ya sen anlatamadın ya da yanlış kontrol ediyorsun. Bana anlattığına göre bu senin için en doğru sonucu vermesi gerekiyor.

    :)

    Kategoriler
    id   adi
    1    Spor
    2    Magazin

    Ürünler
    id   kat_id   adi
    1    1          bla bla
    2    1          xx xxx 
    şu üstte ki kayda göre bana öyle bi select at ki hocam sadece spor kategorisini versin sonuç olarak. Az önce üstte yazdığın inner joinli olan sorgunun sonucunda 2 tane alt alta spor kaydı dönüyor.

    select k.adi

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    group by k.adi

     


    ‘A’ Developer is a good starter and a good finisher as well
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı

    select k.* 

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    Bu istediği sonucu vermiyorsa ya ben anlayamadım ya sen anlatamadın ya da yanlış kontrol ediyorsun. Bana anlattığına göre bu senin için en doğru sonucu vermesi gerekiyor.

    :)

    Kategoriler
    id   adi
    1    Spor
    2    Magazin

    Ürünler
    id   kat_id   adi
    1    1          bla bla
    2    1          xx xxx 
    şu üstte ki kayda göre bana öyle bi select at ki hocam sadece spor kategorisini versin sonuç olarak. Az önce üstte yazdığın inner joinli olan sorgunun sonucunda 2 tane alt alta spor kaydı dönüyor.

    select k.adi

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    group by k.adi

     

    Hocam bu sorgu ortalama olarak (çekilen sütun sayısının fazlalığına bağlı olarak) benim yazdığım sorgunun 2 katı (sadece kategori adı sütunu çekilirse) sürede çalışır. Yani "select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1)" bu sorgu 10 milisaniyede çalışırsa senin sorgu 20 milisaniyede çalışır. Alabileceği en performanslı sorgu "select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1)" bu.


    Titanyumun gücü adına!!!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    _DevLop_
    _DevLop_'s avatar
    Kayıt Tarihi: 17/Ağustos/2015
    Erkek
    Yazilimci bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı

    select k.* 

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    Bu istediği sonucu vermiyorsa ya ben anlayamadım ya sen anlatamadın ya da yanlış kontrol ediyorsun. Bana anlattığına göre bu senin için en doğru sonucu vermesi gerekiyor.

    :)

    Kategoriler
    id   adi
    1    Spor
    2    Magazin

    Ürünler
    id   kat_id   adi
    1    1          bla bla
    2    1          xx xxx 
    şu üstte ki kayda göre bana öyle bi select at ki hocam sadece spor kategorisini versin sonuç olarak. Az önce üstte yazdığın inner joinli olan sorgunun sonucunda 2 tane alt alta spor kaydı dönüyor.

    select k.adi

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    group by k.adi

     

    Hocam bu sorgu ortalama olarak (çekilen sütun sayısının fazlalığına bağlı olarak) benim yazdığım sorgunun 2 katı (sadece kategori adı sütunu çekilirse) sürede çalışır. Yani "select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1)" bu sorgu 10 milisaniyede çalışırsa senin sorgu 20 milisaniyede çalışır. Alabileceği en performanslı sorgu "select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1)" bu.

    407 BİN 412 kayıtta test ettim. 

    Senin söyledğin sorguda 11.2 saniye. Benim yazdığım sorguda 5 saniyede geldi :)

    Bence sende bir test et.. Çünkü where ifadesine bir kısıtlama getiriyorsun. Bu kısıtlamada bir set daha döndürmeye çalışıyor. ve döndürdüğü sete filtre uyguluyor.

    En azından benim yorumum ve gözlemlediğim bu..


    ‘A’ Developer is a good starter and a good finisher as well
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek
    _DevLop_ bunu yazdı
    Yazilimci bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı
    cemnet bunu yazdı
    _DevLop_ bunu yazdı

    select k.* 

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    Bu istediği sonucu vermiyorsa ya ben anlayamadım ya sen anlatamadın ya da yanlış kontrol ediyorsun. Bana anlattığına göre bu senin için en doğru sonucu vermesi gerekiyor.

    :)

    Kategoriler
    id   adi
    1    Spor
    2    Magazin

    Ürünler
    id   kat_id   adi
    1    1          bla bla
    2    1          xx xxx 
    şu üstte ki kayda göre bana öyle bi select at ki hocam sadece spor kategorisini versin sonuç olarak. Az önce üstte yazdığın inner joinli olan sorgunun sonucunda 2 tane alt alta spor kaydı dönüyor.

    select k.adi

    from Kategori k

    inner join Urun u on u.KatD = k.ID

    group by k.adi

     

    Hocam bu sorgu ortalama olarak (çekilen sütun sayısının fazlalığına bağlı olarak) benim yazdığım sorgunun 2 katı (sadece kategori adı sütunu çekilirse) sürede çalışır. Yani "select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1)" bu sorgu 10 milisaniyede çalışırsa senin sorgu 20 milisaniyede çalışır. Alabileceği en performanslı sorgu "select * from Kategori where id in (select distinct kat_id from Urunler where AktifMi=1)" bu.

    407 BİN 412 kayıtta test ettim. 

    Senin söyledğin sorguda 11.2 saniye. Benim yazdığım sorguda 5 saniyede geldi :)

    Bence sende bir test et.. Çünkü where ifadesine bir kısıtlama getiriyorsun. Bu kısıtlamada bir set daha döndürmeye çalışıyor. ve döndürdüğü sete filtre uyguluyor.

    En azından benim yorumum ve gözlemlediğim bu..

    Test edebileceğim bir data yok hocam :) Çektiğin tablonun veri yapılanmasını bilmiyorum hocam bu sebeple o data üzerine yorum yapamıyorum. Benim sorguda da sadece kategori adını select etmeyi denedin mi hocam yoksa * la mı select ettin.

    Hoş ben hala inat ediyorum o sorgu joinden daha hızlı çalışır :)

     


    Titanyumun gücü adına!!!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    mihni
    mihni's avatar
    Kayıt Tarihi: 04/Mayıs/2014
    Erkek

    Id kolonuna primary key yapıp, diğer kolonları da indexleyip sorgularını hızlandırabilirsin.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    arkadaşlar teşekkür ediyorum. data çokluğuna göre iki t-sql'i de test edeceğim. 

    Bu arada 3. bi ihtimal olarakta. Kategori tablosuna bi sutün daha açıp (UrunAdet), daha sonra ürünlerde ekleme çıkarma yapınca o satırı güncellemeyi de düşünüyorum. Daha sonra 

    select * from kategori where UrunAdet<>0 şeklinde de çalıştırabilirim ilerde. Ancak şimdi değil :)

     

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    _DevLop_
    _DevLop_'s avatar
    Kayıt Tarihi: 17/Ağustos/2015
    Erkek

    Şunu iyi anlamak lazım. select * diyerek joinli ya da joinsiz bir sorguyu getirmekle select kolon1, kolon2, kolon3 diye sorguyu getirmek arasında performans farkı gözle görülür şekilde değişiyor. 

    Bunu milyon kayıtlı datalarla sürekli haşır neşir olduğumdan dolayı söylüyorum. Gereksiz kolonları koymaktansa çok ihtiyaç yok ise select kolon adı şeklinde yazılması daha doğru olur..

    Bu birincisiydi.

    İkinci olarak ise; kayıtları 2 defa çağırıyorsunuz, benim yazdığım mantıkta ise bir defa çağırıyor ve grupluyoruz. 

    Söylediğim gibi biraz önce bu kayıtlarda test yaparak gözlemlediğim sonuçları aktarmaya çalıştım. İkna olmak isteyen var ise datalara çektiğim sorguların ss larını pm atabilirim :)


    ‘A’ Developer is a good starter and a good finisher as well
Toplam Hit: 2343 Toplam Mesaj: 19
sql