INSERT INTO Kullanımı

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
vipaydin
Üye
Mesajlar: 82
Kayıt: 23 Ara 2004 04:52

INSERT INTO Kullanımı

Mesaj gönderen vipaydin »

Merhaba.
MSSQL 2000 kullanıyorum.

Elimde bir tane tablo var. Yaklaşık 100 sütun ve 17.000 satır içeriyor.
Bu tabloya ait aynı özellikleri taşıyan bir tane daha tablo oluşturdum ve önceki tablodaki bilgileri, sonradan açtığım tabloya aktaracağım.

Kullandığım kod ise;

Kod: Tümünü seç

INSERT INTO Table2 (alanlarım..)
SELECT (alanlarım..) FROM Table1
Yaklaşık 25 dakika bekledim hala sonuç yoktu. Query çalışıyor ama 25 dakika oldu beklemeye dayanamadım.

Bu aktarım işleminde olayı hızlandırmak için ne yapabilirim?

Saygılarımla.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

Kullanıcı avatarı
vipaydin
Üye
Mesajlar: 82
Kayıt: 23 Ara 2004 04:52

Mesaj gönderen vipaydin »

Verdiğiniz linkleri inceledim. Teşekkür ederim.

Yanlış anlamadıysam her iki linkte benim yazdığım kodu doğruluyor.
Program üzerinde bu kodu ADO nesneleriyle kullanıyorum. Daha öncede bahsettiğim gibi yaklaşık 25 dakika bekledim halen query çalışıyordu.

Test etmedim ama merak ettiğim bir diğer soru şu:

Yukarıdaki kodu kullanmak mı, yoksa her seferinde where komutu ile INSERT INTO ifadesini kayıt sayısı kadar çalıştırmak mı? Yani query nin 17.000 defa çalışması.

Bir query nin 17.000 defa çalışması da mantıksız gibi geliyor. Ama diğer taraftan da 25 dakika beklemek de çok sıkıcı.

Acaba bunun başka bir çözümü yok mu?

Tşk.ederim kolay gelsin.
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

@sabanakman arkadaşımızın dediği gibi aşağıdaki kod, yeni table'ı oluşturup kayıtlarıda içine atar ve 25 dk gibi bir zaman almaz. :idea:

Kod: Tümünü seç

select * into yenitbl from tbl
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

vipaydin yazdı:Verdiğiniz linkleri inceledim. Teşekkür ederim.

Yanlış anlamadıysam her iki linkte benim yazdığım kodu doğruluyor.
Program üzerinde bu kodu ADO nesneleriyle kullanıyorum. Daha öncede bahsettiğim gibi yaklaşık 25 dakika bekledim halen query çalışıyordu.

Test etmedim ama merak ettiğim bir diğer soru şu:

Yukarıdaki kodu kullanmak mı, yoksa her seferinde where komutu ile INSERT INTO ifadesini kayıt sayısı kadar çalıştırmak mı? Yani query nin 17.000 defa çalışması.

Bir query nin 17.000 defa çalışması da mantıksız gibi geliyor. Ama diğer taraftan da 25 dakika beklemek de çok sıkıcı.

Acaba bunun başka bir çözümü yok mu?

Tşk.ederim kolay gelsin.
Tek seferde INSERT INTO yapmak her zaman çok daha kısa sürecektir.

Bahsettiğin işlemin süresi en fazla 1-2 saniyedir. 25 dakikanın nedeni veritabanında özel trigger falan yazılmadıysa başka birşeydir.

Bunu DEBUG modunda veya özel kodla tespit etmelisin.

25 dakikada tek komutla milyonlarca kayıt INSERT edilir normalde.
Kullanıcı avatarı
vipaydin
Üye
Mesajlar: 82
Kayıt: 23 Ara 2004 04:52

Mesaj gönderen vipaydin »

Dediğiniz doğrudur hocam.

Tablolar üzerinde Trigger var. Hem de 10-15 tane tabloya ayrıca kayıt yazan trigger'lar, update yapan trigger'lar.

Şimdi şunu sormak istiyorum. Bu işlem esnasında trigger'ları devre dışı bırakmak mümkün müdür acaba?

Tşk.ederim kolay gelsin.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

DISABLE TRIGGER ve ENABLE TRIGGER komutlarını kullanıyorsunuz.
Cevapla