oracle'a yeni başlamak üzereyim. bu sorum genelde bütün v.tabanları ile ilgili ama oracle'da deneyeceğim için oracle'a yazıyorum.
binlerce kaydın bulunduğu 5 ayrı table'dan bazı verileri çekip yeni verilerle beraber başka bir table'a kayıt yaptıracağım. sorum şu:
server'a fazla yüklenmemek ve en az yükle işlemi gerçekleştirmek için sql sorgu mu, index mi yoksa master-detail ilişkisini mi tavsiye edersiniz?
uzman arkadaşlar cevaplarlarsa çok sevinirim.
herkese kolay gelsin.
table'dan veri çekmek için en mantıklı yol nedir?
table'dan veri çekmek için en mantıklı yol nedir?
Alper Şirvan
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Bu konu master-detail ili ilgili görünmemekte. Verileri SQL içinden (insert into tablo (alan1, alan2,..) select secilen_alan1, secilen_alan2, .. from tablo_lar) mi atacaksınız yoksa program içinden mi? Tabi ki çekilecek alanların indeksi olması oluşturulmaları hızını olumlu etkileyecektir
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
ilginize teşekkür ederim.
programın içinden kodlayarak yapacağım.daha netleşmiş değil ama öyle görünüyor. haftabaşında netleşecek.
diğer tablolardaki ortak alanları yenitabloya insert etmek yerine dbgrid vs ile id bağlantılı ekranda göstersek olabilir mi?
programın içinden kodlayarak yapacağım.daha netleşmiş değil ama öyle görünüyor. haftabaşında netleşecek.
diğer tablolardaki ortak alanları yenitabloya insert etmek yerine dbgrid vs ile id bağlantılı ekranda göstersek olabilir mi?
Alper Şirvan
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Çekeceğiniz bilgiler sadece veri tabanı üzerindeki diğer tablolarda var ise ya da SQL komutları ile istenilen şekle çevrilebiliyorsa yukarıdaki yöntem en pratik ve en hızlısıdır. Eğer delphi tarafta da bazı hesaplamalar yapıp o şekilde veriler eklenecekse herhangi bir datasource bileşenine bağlı olmayan bir dataset/query bileşeni ile yapmakta fayda var. DataSource ve dolaysıyla aynı anda grid vb. de göstermek ciddi bir yavaşlama sağlayacaktır. Eğer bu tablo zaten bir grid e bağlı ise o zaman işleme başlamadan önce; şeklinde de olabilir.
Kod: Tümünü seç
...
Query.DataSource.DisableControls;
....
// insert işlemi
...
Query.DataSource.EnableControls;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
Ek olarak insert edeceğiniz alan indexlenmiş ise bu hızı olumsuz yönde etkileyecektir. Ayrıca binlerce kayıtta merak etmeyin bir sorun olmaz. yüzbinler ve milyonlar deseniz neyse.Ayrıca kaydın sayısı değil alandaki bilginin boyutunu da dikkate almak lazım. Örneğin tarih alanı ile içeriğine 10 sayfa text attığınız bir alan hız konusunda oldukça farklı sonuçlar almanıza neden olacaktır.
Sorunuzu daha açık yazmanız uzman arkadaşların verecekleri cevapları daha net yazmalarını sağlayacaktır.
Sorunuzu daha açık yazmanız uzman arkadaşların verecekleri cevapları daha net yazmalarını sağlayacaktır.
Bu yazdıklarınız birbirinin yerine geçen şeyler değil.sql sorgu mu, index mi yoksa master-detail ilişkisini mi tavsiye edersiniz?
Her zaman bir vâmuk-i azra olur alem bu ya,
Nev-be-nev efsaneler peydâ olur alem bu ya,
Kabz u bast kıl tefekkür aleminde ey gönül,
Vakt-i sermânın sonu, vakt-i germân olur alem bu ya...
Nev-be-nev efsaneler peydâ olur alem bu ya,
Kabz u bast kıl tefekkür aleminde ey gönül,
Vakt-i sermânın sonu, vakt-i germân olur alem bu ya...
@shadowmann arkadaşımız index hız bağıntısı hakkında bir şey söylemiş; hep hızlanmak için ilgili alanların indekslenmesini söylüyoruz. Bu hızlanma sadece veriyi okumada doğrudur. Düşünün ki her indekslenen alan kabaca ayrı bir indeks tablosu demektir ve kayıt tabloya yazılırken ilgili indeks alanı/alanları da yerlerine yazılmaktadır bu da hiç indeks olmayan ya da sadece tek bir (PK) indeksi olan tabloya insert hızına göre daha yavaş olacaktır. Bu yavaşlık kullanılan yapı ve sisteme göre görecelidir. Çok yüksek miktardaki veriden bahsederken hissedilebilir
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
dataları sorunsuz çektim. hatta lookupcombo bile kullandım
ama insert aşamasında tüm günümü alan bir sıkıntı ile bir türlü işlemi gerçekleştiremedim.
yazdığım koda ;
SQL Navigator'de ORA-00900: invalid SQL statement ,
delphi içinde ise önce
'raised exception class EDBEngineErro with messsage 'General SQL error. ORA-00936: missing expression'.
sonra da; column not allowed here hatası aldım.
sorun ne olabilir arkadaşlar?
ama insert aşamasında tüm günümü alan bir sıkıntı ile bir türlü işlemi gerçekleştiremedim.
yazdığım koda ;
SQL Navigator'de ORA-00900: invalid SQL statement ,
delphi içinde ise önce
'raised exception class EDBEngineErro with messsage 'General SQL error. ORA-00936: missing expression'.
sonra da; column not allowed here hatası aldım.
sorun ne olabilir arkadaşlar?
Alper Şirvan
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
string alanlara #39 koyarak sorunu çözdüm.
sadece sql kullanarak master-detail hiç kullanmadım... basitçe anlatmak gerekirse şöyle birşeye ihtiyacım var:
bir table'da mesela id, adsoyad alanları var. (bu ana table)
diğer table'da da h_id,cocuk_adi (bu da detay)
table componentleri ile bu çok kolay ama sadece wwSQL ve benzeri komponentlerle sadece sql kodlarıyla bunu halletmem lazım...
ne tavsiye edersiniz?
sadece sql kullanarak master-detail hiç kullanmadım... basitçe anlatmak gerekirse şöyle birşeye ihtiyacım var:
bir table'da mesela id, adsoyad alanları var. (bu ana table)
diğer table'da da h_id,cocuk_adi (bu da detay)
table componentleri ile bu çok kolay ama sadece wwSQL ve benzeri komponentlerle sadece sql kodlarıyla bunu halletmem lazım...
ne tavsiye edersiniz?
Alper Şirvan
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...
Şair, yazar, ressam.. 3 kitabı var...
Yazılımcı... Kamuda memur...
Galatasaray'lı... Spor aşığı...
Güneş Enerjili Tekerlekli Sandalyenin
Fikir Babası...