Indeks kullanılmayan tablolar için iki SQL cümlesi

Indeks kullanmadığımız tablolarda bazen tüm kolonları aynı olan ya da benzer verilere sahip kayıtlar oluşur.

Bunlardan fazla olan kayıtları silmek için ROWID den yararlanabiliriz.

/*Birden çok kaydın fazla olanlarını silip tek kayda indirmek*/
DELETE from Tablo1 t where rowid NOT IN (select min(rowid) from Tablo1 b where t.ogrenci_no = b.ogrenci_no and t.kayit_durum = b.kayit_durum group by b.ogrenci_no, b.kayit_durum);



Tablolarda Indeksleme yapmadığımız alanlar için insert cümlesine kontroller ekleyebiliriz, böylece çift kayıt atılmasını önlemiş oluruz:

/*Insert cümlesinde kayıt durumu kontrolü*/
INSERT INTO tbl_ogrenci t (tbl_ogrenci_no, tbl_ogrenci_ad, tbl_kayit_durum) select 87, 'Eray', 'A' from dual where not exists (SELECT * FROM tbl_ogrenci o WHERE o.tbl_ogrenci_no = t.tbl_ogrenci_no AND o.tbl_kayit_durum = 'A');

Hiç yorum yok: