Yorumları: 152
Konuları: 56
Kayıt Tarihi: 22-11-2020
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.4
- Delphi 10.2
- Delphi 10
Rep Puanı: 89 Başlangıç
Merhaba,
Alttaki kodlarla daha önce kayıtlar yoksa insert sonra, tüm kayıtlar yeni sıra numarasına göre databaseye update ediyorum.
Kayıt sayısı minimum 1000, bazen işlem dakikalarca sürüyor ve program donuyor bu işlemi nasıl hızlandırır veya arka planda kodların işlem yapmasını nasıl sağlarım.
Sqlite ile çok kısa sürüyordu acaba sorun Firebird dataseden mi kaynaklı acaba?
procedure TForm.ButtonSaveClick(Sender: TObject);
var
I: Integer;
FDQ: TFDQuery;
begin
TButton(Sender).Enabled := False;
FDQ := TFDQuery.Create(Nil);
FDQ.Connection := FDConnection;
FDQ.DisableControls;
ListView1.BeginUpdate;
try
for I := 0 to ListView1.ItemCount - 1 do
begin
Application.ProcessMessages;
if SameText(ListView1.Items[I].Data['Id'].ToString, '0') then
begin
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Insert Into Llist (Must, Title, Link, Content, Note)');
FDQ.SQL.Add(' Values (:Mus, :Tit, :Lin, :Con, :Note)');
FDQ.ParamByName('Mus').AsInteger := 0;
FDQ.ParamByName('Tit').AsString := ListView1.Items[I].Data['Title'].AsString;
FDQ.ParamByName('Lin').AsString := ListView1.Items[I].Data['Link'].AsString;
FDQ.ParamByName('Con').AsString := ListView1.Items[I].Data['Content'].AsString;
FDQ.ParamByName('Note').AsString := ListView1.Items[I].Data['Note'].AsString;
FDQ.ExecSQL;
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Select Max(Id) As Id From Llist');
FDQ.Prepared := True;
FDQ.Open;
ListView1.Items[I].Data['Id'] := NumberConvert(FDQ.FieldByName('Id').AsInteger);
end;
ListView1.Items[I].Data['Must'] := NumberConvert(ListView1.Items[I].Index) + 1; // Yeni Sırano
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Update PLlist Set Must=:Mus Where Id=:Id');
FDQ.ParamByName('Mus').AsInteger := ListView1.Items[I].Data['Must'].AsInteger;
FDQ.ParamByName('Id').AsInteger := ListView1.Items[I].Data['Id'].AsInteger;
FDQ.ExecSQL;
end;
finally
FDQ.EnableControls;
FDQ.Free;
ListView1.EndUpdate;
TButton(Sender).Enabled := True;
end;
end;
Yorumları: 853
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.357 Uzman
(20-05-2024, Saat: 21:05)Altıner Adlı Kullanıcıdan Alıntı: Merhaba,
Alttaki kodlarla daha önce kayıtlar yoksa insert sonra, tüm kayıtlar yeni sıra numarasına göre databaseye update ediyorum.
Kayıt sayısı minimum 1000, bazen işlem dakikalarca sürüyor ve program donuyor bu işlemi nasıl hızlandırır veya arka planda kodların işlem yapmasını nasıl sağlarım.
Sqlite ile çok kısa sürüyordu acaba sorun Firebird dataseden mi kaynaklı acaba?
procedure TForm.ButtonSaveClick(Sender: TObject);
var
I: Integer;
FDQ: TFDQuery;
begin
TButton(Sender).Enabled := False;
FDQ := TFDQuery.Create(Nil);
FDQ.Connection := FDConnection;
FDQ.DisableControls;
ListView1.BeginUpdate;
try
for I := 0 to ListView1.ItemCount - 1 do
begin
Application.ProcessMessages;
if SameText(ListView1.Items[I].Data['Id'].ToString, '0') then
begin
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Insert Into Llist (Must, Title, Link, Content, Note)');
FDQ.SQL.Add(' Values (:Mus, :Tit, :Lin, :Con, :Note)');
FDQ.ParamByName('Mus').AsInteger := 0;
FDQ.ParamByName('Tit').AsString := ListView1.Items[I].Data['Title'].AsString;
FDQ.ParamByName('Lin').AsString := ListView1.Items[I].Data['Link'].AsString;
FDQ.ParamByName('Con').AsString := ListView1.Items[I].Data['Content'].AsString;
FDQ.ParamByName('Note').AsString := ListView1.Items[I].Data['Note'].AsString;
FDQ.ExecSQL;
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Select Max(Id) As Id From Llist');
FDQ.Prepared := True;
FDQ.Open;
ListView1.Items[I].Data['Id'] := NumberConvert(FDQ.FieldByName('Id').AsInteger);
end;
ListView1.Items[I].Data['Must'] := NumberConvert(ListView1.Items[I].Index) + 1; // Yeni Sırano
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Update PLlist Set Must=:Mus Where Id=:Id');
FDQ.ParamByName('Mus').AsInteger := ListView1.Items[I].Data['Must'].AsInteger;
FDQ.ParamByName('Id').AsInteger := ListView1.Items[I].Data['Id'].AsInteger;
FDQ.ExecSQL;
end;
finally
FDQ.EnableControls;
FDQ.Free;
ListView1.EndUpdate;
TButton(Sender).Enabled := True;
end;
end;
Merhabalar,
Sıralama işlemini bir Procedure ile yapsanız.
SET TERM !! ;
CREATE PROCEDURE UpdateSiraNo
AS
DECLARE VARIABLE id INTEGER;
DECLARE VARIABLE new_sira_no INTEGER;
BEGIN
new_sira_no = 0;
FOR SELECT id FROM ana_tablo ORDER BY id INTO :id DO
BEGIN
new_sira_no = new_sira_no + 1;
UPDATE ana_tablo SET sıra_no = :new_sira_no WHERE id = :id;
END
END !!
SET TERM ; !!
EXECUTE PROCEDURE UpdateSiraNo;
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 152
Konuları: 56
Kayıt Tarihi: 22-11-2020
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.4
- Delphi 10.2
- Delphi 10
Rep Puanı: 89 Başlangıç
(21-05-2024, Saat: 11:47)hi_selamlar Adlı Kullanıcıdan Alıntı: (20-05-2024, Saat: 21:05)Altıner Adlı Kullanıcıdan Alıntı: Merhaba,
Alttaki kodlarla daha önce kayıtlar yoksa insert sonra, tüm kayıtlar yeni sıra numarasına göre databaseye update ediyorum.
Kayıt sayısı minimum 1000, bazen işlem dakikalarca sürüyor ve program donuyor bu işlemi nasıl hızlandırır veya arka planda kodların işlem yapmasını nasıl sağlarım.
Sqlite ile çok kısa sürüyordu acaba sorun Firebird dataseden mi kaynaklı acaba?
procedure TForm.ButtonSaveClick(Sender: TObject);
var
I: Integer;
FDQ: TFDQuery;
begin
TButton(Sender).Enabled := False;
FDQ := TFDQuery.Create(Nil);
FDQ.Connection := FDConnection;
FDQ.DisableControls;
ListView1.BeginUpdate;
try
for I := 0 to ListView1.ItemCount - 1 do
begin
Application.ProcessMessages;
if SameText(ListView1.Items[I].Data['Id'].ToString, '0') then
begin
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Insert Into Llist (Must, Title, Link, Content, Note)');
FDQ.SQL.Add(' Values (:Mus, :Tit, :Lin, :Con, :Note)');
FDQ.ParamByName('Mus').AsInteger := 0;
FDQ.ParamByName('Tit').AsString := ListView1.Items[I].Data['Title'].AsString;
FDQ.ParamByName('Lin').AsString := ListView1.Items[I].Data['Link'].AsString;
FDQ.ParamByName('Con').AsString := ListView1.Items[I].Data['Content'].AsString;
FDQ.ParamByName('Note').AsString := ListView1.Items[I].Data['Note'].AsString;
FDQ.ExecSQL;
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Select Max(Id) As Id From Llist');
FDQ.Prepared := True;
FDQ.Open;
ListView1.Items[I].Data['Id'] := NumberConvert(FDQ.FieldByName('Id').AsInteger);
end;
ListView1.Items[I].Data['Must'] := NumberConvert(ListView1.Items[I].Index) + 1; // Yeni Sırano
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Add('Update PLlist Set Must=:Mus Where Id=:Id');
FDQ.ParamByName('Mus').AsInteger := ListView1.Items[I].Data['Must'].AsInteger;
FDQ.ParamByName('Id').AsInteger := ListView1.Items[I].Data['Id'].AsInteger;
FDQ.ExecSQL;
end;
finally
FDQ.EnableControls;
FDQ.Free;
ListView1.EndUpdate;
TButton(Sender).Enabled := True;
end;
end;
Merhabalar,
Sıralama işlemini bir Procedure ile yapsanız.
SET TERM !! ;
CREATE PROCEDURE UpdateSiraNo
AS
DECLARE VARIABLE id INTEGER;
DECLARE VARIABLE new_sira_no INTEGER;
BEGIN
new_sira_no = 0;
FOR SELECT id FROM ana_tablo ORDER BY id INTO :id DO
BEGIN
new_sira_no = new_sira_no + 1;
UPDATE ana_tablo SET sıra_no = :new_sira_no WHERE id = :id;
END
END !!
SET TERM ; !!
EXECUTE PROCEDURE UpdateSiraNo;
Elinize sağlık sayenizde bir şey daha öğrenmiş oldum, kendime göre uyarladım.
Fakat,
1. Verileri ListViewden for döngüsü ile databaseye kayıt yapıyorum, fakat ListViewi tekrar listelediğimde doğru sıralamada ile listeleme gelmiyor.
2. Bazen Databaseye insert yapmıyorum sadece sıra no değişikliği yapıyorum bu nedenden dolayı benim için kullanışlı değil.
FDQuery.Connection := FDConnection;
FDQuery.Active := False;
FDQuery.Close;
FDQuery.SQL.Clear;
FDQuery.SQL.Add('SET TERM !!;(');
FDQuery.SQL.Add('CREATE PROCEDURE UpdateSiraNo');
FDQuery.SQL.Add('AS');
FDQuery.SQL.Add('DECLARE VARIABLE id INTEGER;');
FDQuery.SQL.Add('DECLARE VARIABLE MUST INTEGER;');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = 0;');
FDQuery.SQL.Add('FOR SELECT id FROM LLIST ORDER BY id INTO :id DO');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = MUST + 1;');
FDQuery.SQL.Add('UPDATE LLIST SET MUST = :new_sira_no WHERE id = :id;');
FDQuery.SQL.Add('END');
FDQuery.SQL.Add('END !!');
FDQuery.SQL.Add('SET TERM; !!');
FDQuery.SQL.Add('EXECUTE PROCEDURE UpdateSiraNo;');
Yorumları: 89
Konuları: 9
Kayıt Tarihi: 14-08-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 305 Acemi
Merhaba, Cursor içerisinde update' i daha hızlı kılmak için aşağıdaki gibi kullanmanızı öneririm.
FOR SELECT id FROM LLIST ORDER BY id INTO :id AS CURSOR cur DO
BEGIN
MUST = MUST + 1;
UPDATE LLIST SET MUST = :new_sira_no WHERE CURRENT OF cur;
END
Yorumları: 101
Konuları: 15
Kayıt Tarihi: 29-03-2021
Aktif Kullandığınız Delphi Sürümü:
- Delphi 11
- Delphi 10.4
- Delphi 10.3
Rep Puanı: 185 Başlangıç
(21-05-2024, Saat: 19:27)Altıner Adlı Kullanıcıdan Alıntı: (21-05-2024, Saat: 11:47)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhabalar,
Sıralama işlemini bir Procedure ile yapsanız.
SET TERM !! ;
CREATE PROCEDURE UpdateSiraNo
AS
DECLARE VARIABLE id INTEGER;
DECLARE VARIABLE new_sira_no INTEGER;
BEGIN
new_sira_no = 0;
FOR SELECT id FROM ana_tablo ORDER BY id INTO :id DO
BEGIN
new_sira_no = new_sira_no + 1;
UPDATE ana_tablo SET sıra_no = :new_sira_no WHERE id = :id;
END
END !!
SET TERM ; !!
EXECUTE PROCEDURE UpdateSiraNo;
Elinize sağlık sayenizde bir şey daha öğrenmiş oldum, kendime göre uyarladım.
Fakat,
1. Verileri ListViewden for döngüsü ile databaseye kayıt yapıyorum, fakat ListViewi tekrar listelediğimde doğru sıralamada ile listeleme gelmiyor.
2. Bazen Databaseye insert yapmıyorum sadece sıra no değişikliği yapıyorum bu nedenden dolayı benim için kullanışlı değil.
FDQuery.Connection := FDConnection;
FDQuery.Active := False;
FDQuery.Close;
FDQuery.SQL.Clear;
FDQuery.SQL.Add('SET TERM !!;(');
FDQuery.SQL.Add('CREATE PROCEDURE UpdateSiraNo');
FDQuery.SQL.Add('AS');
FDQuery.SQL.Add('DECLARE VARIABLE id INTEGER;');
FDQuery.SQL.Add('DECLARE VARIABLE MUST INTEGER;');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = 0;');
FDQuery.SQL.Add('FOR SELECT id FROM LLIST ORDER BY id INTO :id DO');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = MUST + 1;');
FDQuery.SQL.Add('UPDATE LLIST SET MUST = :new_sira_no WHERE id = :id;');
FDQuery.SQL.Add('END');
FDQuery.SQL.Add('END !!');
FDQuery.SQL.Add('SET TERM; !!');
FDQuery.SQL.Add('EXECUTE PROCEDURE UpdateSiraNo;');
bazen insert , update işlemlerinde hata alıyorum sözünüze istinaden,
FD Bileşenlerinde Try exception handling içinde execute etmeden önce FDConnection.StartTransaction, ettikten sonra FDConnection.Commit yada hataya düşerse FDConnection.Rollback yöntemi ile işlemlerinizi daha güvenli yürütebilirsiniz.
function ExecuteUpdateSiraNoProcedure: Boolean;
var
FDConnection: TFDConnection;
FDQuery: TFDQuery;
begin
Result := False;
FDConnection := TFDConnection.Create(nil);
FDQuery := TFDQuery.Create(nil);
try
// FDConnection'ı yapılandırın
FDConnection.ConnectionDefName := 'MyConnectionDef';
FDConnection.LoginPrompt := False;
FDConnection.Open;
// FDQuery bağlantısını ayarlayın
FDQuery.Connection := FDConnection;
// İşlemi başlat
FDConnection.StartTransaction;
try
// SQL komutlarını ayarlayın ve çalıştırın
FDQuery.Active := False;
FDQuery.Close;
FDQuery.SQL.Clear;
FDQuery.SQL.Add('SET TERM !!;');
FDQuery.SQL.Add('CREATE PROCEDURE UpdateSiraNo');
FDQuery.SQL.Add('AS');
FDQuery.SQL.Add('DECLARE VARIABLE id INTEGER;');
FDQuery.SQL.Add('DECLARE VARIABLE MUST INTEGER;');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = 0;');
FDQuery.SQL.Add('FOR SELECT id FROM LLIST ORDER BY id INTO :id DO');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = MUST + 1;');
FDQuery.SQL.Add('UPDATE LLIST SET MUST = :MUST WHERE id = :id;');
FDQuery.SQL.Add('END');
FDQuery.SQL.Add('END !!');
FDQuery.SQL.Add('SET TERM ;!!');
FDQuery.SQL.Add('EXECUTE PROCEDURE UpdateSiraNo;');
// Sorguyu çalıştırın
FDQuery.ExecSQL;
// İşlemi tamamla
FDConnection.Commit;
Result := True; // İşlem başarıyla tamamlandı
except
on E: Exception do
begin
// Hata durumunda işlemi geri al
FDConnection.Rollback;
Result := False; // Hata oluştu
end;
end;
finally
FDQuery.Free;
FDConnection.Free;
end;
end;
Yorumları: 152
Konuları: 56
Kayıt Tarihi: 22-11-2020
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.4
- Delphi 10.2
- Delphi 10
Rep Puanı: 89 Başlangıç
22-05-2024, Saat: 10:50
(Son Düzenleme: 22-05-2024, Saat: 10:51, Düzenleyen: Altıner.)
(22-05-2024, Saat: 00:01)Mesut Adlı Kullanıcıdan Alıntı: (21-05-2024, Saat: 19:27)Altıner Adlı Kullanıcıdan Alıntı: Elinize sağlık sayenizde bir şey daha öğrenmiş oldum, kendime göre uyarladım.
Fakat,
1. Verileri ListViewden for döngüsü ile databaseye kayıt yapıyorum, fakat ListViewi tekrar listelediğimde doğru sıralamada ile listeleme gelmiyor.
2. Bazen Databaseye insert yapmıyorum sadece sıra no değişikliği yapıyorum bu nedenden dolayı benim için kullanışlı değil.
FDQuery.Connection := FDConnection;
FDQuery.Active := False;
FDQuery.Close;
FDQuery.SQL.Clear;
FDQuery.SQL.Add('SET TERM !!;(');
FDQuery.SQL.Add('CREATE PROCEDURE UpdateSiraNo');
FDQuery.SQL.Add('AS');
FDQuery.SQL.Add('DECLARE VARIABLE id INTEGER;');
FDQuery.SQL.Add('DECLARE VARIABLE MUST INTEGER;');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = 0;');
FDQuery.SQL.Add('FOR SELECT id FROM LLIST ORDER BY id INTO :id DO');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = MUST + 1;');
FDQuery.SQL.Add('UPDATE LLIST SET MUST = :new_sira_no WHERE id = :id;');
FDQuery.SQL.Add('END');
FDQuery.SQL.Add('END !!');
FDQuery.SQL.Add('SET TERM; !!');
FDQuery.SQL.Add('EXECUTE PROCEDURE UpdateSiraNo;');
bazen insert , update işlemlerinde hata alıyorum sözünüze istinaden,
FD Bileşenlerinde Try exception handling içinde execute etmeden önce FDConnection.StartTransaction, ettikten sonra FDConnection.Commit yada hataya düşerse FDConnection.Rollback yöntemi ile işlemlerinizi daha güvenli yürütebilirsiniz.
function ExecuteUpdateSiraNoProcedure: Boolean;
var
FDConnection: TFDConnection;
FDQuery: TFDQuery;
begin
Result := False;
FDConnection := TFDConnection.Create(nil);
FDQuery := TFDQuery.Create(nil);
try
// FDConnection'ı yapılandırın
FDConnection.ConnectionDefName := 'MyConnectionDef';
FDConnection.LoginPrompt := False;
FDConnection.Open;
// FDQuery bağlantısını ayarlayın
FDQuery.Connection := FDConnection;
// İşlemi başlat
FDConnection.StartTransaction;
try
// SQL komutlarını ayarlayın ve çalıştırın
FDQuery.Active := False;
FDQuery.Close;
FDQuery.SQL.Clear;
FDQuery.SQL.Add('SET TERM !!;');
FDQuery.SQL.Add('CREATE PROCEDURE UpdateSiraNo');
FDQuery.SQL.Add('AS');
FDQuery.SQL.Add('DECLARE VARIABLE id INTEGER;');
FDQuery.SQL.Add('DECLARE VARIABLE MUST INTEGER;');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = 0;');
FDQuery.SQL.Add('FOR SELECT id FROM LLIST ORDER BY id INTO :id DO');
FDQuery.SQL.Add('BEGIN');
FDQuery.SQL.Add('MUST = MUST + 1;');
FDQuery.SQL.Add('UPDATE LLIST SET MUST = :MUST WHERE id = :id;');
FDQuery.SQL.Add('END');
FDQuery.SQL.Add('END !!');
FDQuery.SQL.Add('SET TERM ;!!');
FDQuery.SQL.Add('EXECUTE PROCEDURE UpdateSiraNo;');
// Sorguyu çalıştırın
FDQuery.ExecSQL;
// İşlemi tamamla
FDConnection.Commit;
Result := True; // İşlem başarıyla tamamlandı
except
on E: Exception do
begin
// Hata durumunda işlemi geri al
FDConnection.Rollback;
Result := False; // Hata oluştu
end;
end;
finally
FDQuery.Free;
FDConnection.Free;
end;
end;
Teşekkür ederim işimi çözdü.
(21-05-2024, Saat: 22:52)anemos Adlı Kullanıcıdan Alıntı: Merhaba, Cursor içerisinde update' i daha hızlı kılmak için aşağıdaki gibi kullanmanızı öneririm.
FOR SELECT id FROM LLIST ORDER BY id INTO :id AS CURSOR cur DO
BEGIN
MUST = MUST + 1;
UPDATE LLIST SET MUST = :new_sira_no WHERE CURRENT OF cur;
END
Teşekkür ederim Sorunu çözdüm
Yorumları: 1.499
Konuları: 83
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 12.314 Üstad
Cursor kullanımını hiç bir RDBMS'de önermiyorum. Onun yerine update'e uğrayacak tabloya self join yaparak çözebilirsiniz eğer tek başına where condition yeterli gelmiyor ise. Cursor'lar oldukça yavaştırlar.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
Selam,
Neden bütün işlemlerinizi StoredProcedure ile yapmıyorsunuz ?
ayrıca neden her defasında UpdateSiraNo procedurunu tekrar oluşturuyorsunuz ?
Yorumları: 510
Konuları: 64
Kayıt Tarihi: 05-02-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.2
- Delphi 10.1
- Delphi 7
Rep Puanı: 3.359 Uzman
Bence sorgulardaki SQL cümlelerinizi kontrol edin.
Mesela Insert işleminden sonra bir daha SELECT yapmadan yapılan kaydın bilgilerini dönebilirsiniz. Haliyle n tane SELECT azalmış olur. Bunu veri tabanı sistemlerinin çoğu sağlıyor.
MSSQL ve PostgreSQL ile bunu rahatlıkla yapabiliyorsunuz. Diğerleri için de araştırma yapmak gerekir.
MSSQL
https://stackoverflow.com/questions/7917...ter-insert
PostgreSQL
https://www.postgresql.org/docs/current/...rning.html
Firebird
https://firebirdsql.org/refdocs/langrefu...nsert.html
Sıralama içinde procedure veya aynı mantıkla windows function denilen db özellikleri var. Bunları araştırarak yapabilirsiniz.
Fakat ilk dediğim işlemi yapmanız. Size oldukça hız sağlayacaktır.
|