folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Dinamik Siralama Ve Efektif Sekilde Veritabanina Kaydetme



Dinamik Siralama Ve Efektif Sekilde Veritabanina Kaydetme

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    unbalanced bunu yazdı

    @MhmdAlmz hocam nasil 1 delete 1 insert oluyor onu anlamadim? Birden fazla elemanin varsa sira degistiginde hepsini silip sonra tekrar eklemen gerekiyor. Tek delete ve insert ile olacak is degil. Benim düsündügüm her ne kadar tehlikeli görünse de (benim hosuma gitmiyor) suan en efektif yol bu görünüyor. Tek bir update ile is cözülecek. siralama string seklinde gelecek client'a, client bu stringi array yapip yeni siralamayi ayarlayacak

    @sLeymN  hocam olay belli bir düzene göre siralama degil, kullanici kafasina göre siralayabilir bu listeyi. Siraladiginda da ben o sekilde kaydedip, tekrar kullanici actiginda o sekilde göstermem gerek. Yani jquery ile yapilacak bir siralama yok, bu siralama kullaniciya bagli. Ister 1. ögeyi ortaya alir, ister 2. ögeyi en sona alir.. Buradaki siralama da önem arzediyor.

     

    DELETE * from SiparisSiraTablo WHERE KuryeNumarasi=5

     

    INSERT INTO SiparisSiraTablo (Sira, SiparisId ,KuryeNumarasi)

    VALUES

    (1,13,5),

    (2,12,5),

    (3,14,5),

    (4,11,5)

     

    2 sorgu çalıştırmış olmuyor muyuz :/

    Tabi baktığımız zaman bulk insert ama tek sorgu.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Log tablosu gibi düşün. Mesela, şu sırada ilk kaydı girdik diyelim.

    nesne5, sirano = 1 {farklisirano = 2000}
    nesne6, sirano = 2 {farklisirano = 2000}
    nesne1, sirano = 3 {farklisirano = 2000}
    nesne3, sirano = 4 {farklisirano = 2000}
    nesne4, sirano = 5 {farklisirano = 2000}
    nesne2, sirano = 6 {farklisirano = 2000}

    daha sonra bir tane yer değiştirdi. O zaman mevcut kayıtları delete yapıp, yeni sıranlamışları insert et. Ha bundaki "Önceki kayıtları delete yapmam performans sorunu çıkarır diyorsan", o zaman hiç eski kayıtları delete etme, yeni eklnenen kayıtlar için farklı bir sıra numarası ver, bu farklisirano ise diğer girilen değer öncekilerden büyük olsun  {farklisirano = 2001} gibi. Böylece sen kayıtları çağıracağın zaman farklisirano en büyük olanı çağırmış olursun.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    MhmdAlmz bunu yazdı

    DELETE * from SiparisSiraTablo WHERE KuryeNumarasi=5

    INSERT INTO SiparisSiraTablo (Sira, SiparisId ,KuryeNumarasi)

    VALUES

    (1,13,5),

    (2,12,5),

    (3,14,5),

    (4,11,5)

     

    2 sorgu çalıştırmış olmuyor muyuz :/

    Tabi baktığımız zaman bulk insert ama tek sorgu.

    Anladim hocam dedigini simdi.. her ne kadar bulk desen de bu sorgunun yükü fazladir. cünkü bir sürü item siliyorsun ve ekliyorsun. Bulk insert yaptirsan da yine bir sürü kayit ekliyorsun ve her siralama degistiginde bu islemi yaptirmak mantikli degil hele ki yüzlerde kullanicin olursa ve her kullanici icin 100 tane kaydin silinip tekrar eklendigini düsünürsen DB ye ekstra yük..

     

    ontedi bunu yazdı

    Log tablosu gibi düşün. Mesela, şu sırada ilk kaydı girdik diyelim.

    nesne5, sirano = 1 {farklisirano = 2000}
    nesne6, sirano = 2 {farklisirano = 2000}
    nesne1, sirano = 3 {farklisirano = 2000}
    nesne3, sirano = 4 {farklisirano = 2000}
    nesne4, sirano = 5 {farklisirano = 2000}
    nesne2, sirano = 6 {farklisirano = 2000}

    daha sonra bir tane yer değiştirdi. O zaman mevcut kayıtları delete yapıp, yeni sıranlamışları insert et. Ha bundaki "Önceki kayıtları delete yapmam performans sorunu çıkarır diyorsan", o zaman hiç eski kayıtları delete etme, yeni eklnenen kayıtlar için farklı bir sıra numarası ver, bu farklisirano ise diğer girilen değer öncekilerden büyük olsun  {farklisirano = 2001} gibi. Böylece sen kayıtları çağıracağın zaman farklisirano en büyük olanı çağırmış olursun.

    farklisirano mantigi ilgincmis ancak yine de 100 tane ögeyi sürekli insert etmek mantikli degil hocam. Hele silmezsen sürekli yeniler eklenecek ve tablo-db sisecek.. Düsün 1000 tane kullanicin var ve her birinin 100 er itemlik 5 listesi var, yani kullanici basina 500 item var ve 1'000 kullanici icin 500'000 item oluyor... 1 yil icinde bu adamlar kac kere tablo siralamasini degistirecek.. Ve her degistirdiginde ekstra 100 eleman artacak.. Ayrica tablo sistikce daha da yavaslayacak..

    o yüzden bu siralama olayini ayri bir tabloda tek bir field de tutmak (yanyana yazili 100 numara) siralama degistiriginde icerigini okumadan yeni siralamayi yine virgülle ayirarak yazip update etmek daha az maliyetli olur

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
Toplam Hit: 5473 Toplam Mesaj: 24
dinamik siralama