• 18-11-2014, 02:58:57
    #1
    Merhaba;

    İçinde 700 bin kayıt mevcut olan ve 5 tabloyla join yaparak oluşturduğum bir view var. Raporlamada doğal olarak yavaş çalışıyor.

    Viewi gerçek tabloya çevirmeye çalıştım.
    INSERT INTO TABLO select * from VIEW ORDER BY IL,ILCE

    Amacım tabloda kayıtların sıralı olması ve her defasında order çekmemek. Ve 5 tablodan okuyacağına, tek tabloyla hızlı olarak verileri listelemek.

    Fakat tabloya kayıtları sıralı olarak atmıyor.
    Wievin içindeki kayıtları sıralı olarak gerçek tabloya nasıl atabilirim?

    (Indexed view de iyi performanslı çalışmadı)
  • 18-11-2014, 03:31:14
    #2
    Merhaba uzman değilim ama belki yardımcı olma konusunda faydam dokunabilir ilk öğrendiğim zamanlarda tablo birleştirme ile ugrasırken inner join dısında diğer join ifadelerinide kullanarak yapmıştık. Çok nadir olarak kullanılan Cross join ifadesini kullanarak yapabilirsin sanırım.
  • 18-11-2014, 04:32:45
    #3
    Kriptofany adlı üyeden alıntı: mesajı görüntüle
    Merhaba uzman değilim ama belki yardımcı olma konusunda faydam dokunabilir ilk öğrendiğim zamanlarda tablo birleştirme ile ugrasırken inner join dısında diğer join ifadelerinide kullanarak yapmıştık. Çok nadir olarak kullanılan Cross join ifadesini kullanarak yapabilirsin sanırım.
    Joinde sorun yok hocam. Joinlerden oluşan Viewi oracledaki materialized view benzeri bir yapıya (sabit tablo) dönüştürmeye çalışıyorum fakat sıralama yapmıyor. Muhtemelen mssqlin insert işlemi multithread çalıştığı için. Belki kayıtları döngüye sokarak, satır satır insert sorunu çözebilir, fakat daha kısa bir yol arıyorum.
  • 18-11-2014, 10:10:54
    #4
    Hangi dil ile çekiyorsunuz bunu sql tabanlı değil yazılım tabanlı daha rahat yapabilirsiniz.. Eğer C# veya C++ kullanıyorsanız vektör listeler veya map ile nasıl yapmanız gerektiğini anlatabilirim.
  • 18-11-2014, 10:49:15
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bilindiği gibi view sanal bir tablodur, bu nedenle içerisindeki kolonlara göre sıralama yapamazsınız.
    View yaratma sırasında verileri çekince order yapamalısınız.

    CREATE VIEW  vw_view1
    AS 
    SELECT TOP 100 PERCENT Kolon1,Kolon2,Kolon3... 
    FROM Tablo
    ORDER BY Kolon1 Asc
    Şöyle farklı bir yol önerebilirim sabit bir tabloya atmak için; temp tablosu yaratıp view'i komple temp üzerinde yaratmak ve temp'i order by yapıp gerçek tabloya temp üzerinden aktarmak.
  • 18-11-2014, 15:03:10
    #6
    efeozyer adlı üyeden alıntı: mesajı görüntüle
    Hangi dil ile çekiyorsunuz bunu sql tabanlı değil yazılım tabanlı daha rahat yapabilirsiniz.. Eğer C# veya C++ kullanıyorsanız vektör listeler veya map ile nasıl yapmanız gerektiğini anlatabilirim.
    C# kullanıyorum, bilgi verebilir misiniz?
  • 18-11-2014, 16:18:30
    #7
    skype : efe.ozyer
  • 18-11-2014, 17:17:38
    #8
    view kullanma.

    INSERT INTO TABLO select * from VIEW ORDER BY IL,ILCE
    viewi olusturmak için kullandıgın o joinli sorguyu kullan INSERT'te , istedigin order by vs ile.
  • 18-11-2014, 17:46:19
    #9
    khaen adlı üyeden alıntı: mesajı görüntüle
    view kullanma.

    INSERT INTO TABLO select * from VIEW ORDER BY IL,ILCE
    viewi olusturmak için kullandıgın o joinli sorguyu kullan INSERT'te , istedigin order by vs ile.
    o şekilde yaptım zaten fakat kayıtları sırayla insert etmiyor.