mysql 2 tablodan 2. tabloda olmayan kaydı hızlı bulma!

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

mysql 2 tablodan 2. tabloda olmayan kaydı hızlı bulma!

Mesaj gönderen skyking »

slm arkadaslar
bir sıkıntım var kulandıgım veri tabanı mysql ve myisam

benim elimde 2 tablo var
1.tablo: rezervasyon
isno:double primary key //islem nosu
prgid:double primary key //hizmet id si
paksrno:double primary key//islem numasında alıcagı paketlerin sıra numarası örnek 1 paket alıp aynı islem numarasına bir baska paket alırsa
paket numarsı 2 oluyor

2 .tablo :rezhrk alıcagı paketler (paketler hizmetlerden olusuyor bir pakete 2den fazla hizmetlerden olusuyor )
isno:double primary key //islem numarası
id:double primary key //hizmet kodun id si
srno:double primary key //sıra nosu
hizkod:varchar;//hizmet kodu

ben burda 2 tablo arasında hangi paketlerden hangi hizmetleri almamıs onu bulmak istiyorum ben buluyorum ama cok yavas oluyor
yani
rezer tablosu 1000 satır ise ve rezhrk 500 satır ise sorgu suresi 3 sn de geliyor

tablolar sismeye basladıgında sn suresi hep artıyor buna hızlı bir cözum uretmem gerekiyor yardımcı olurmusnuz..!

Kod: Tümünü seç

SELECT * FROM rezhrk  WHERE NOT EXISTS (SELECT R.PRGID FROM rezer r  WHERE 
 rezhrk.id=r.prgid and R.PAKSRNO=rezhrk.SRNO and r.isno=rezhrk.isno 
) order by rezhrk.isno,srno
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

tablolardan hangi alanlar indexli yazar mısın?
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

hocam yazdım hangileri indexli diye primary key yazdım yaa
primery key oluncu otamatik indexli alan oluyor hocam..!
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Pardon. Dikkat etmemişim.
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

bu şekilde olursa kayıtlar arttığında kontrol artacağından işlem süresi uzayacak.

msn den görüşmemiz üzerine tablo yapısını şu şekilde yapmanı öneririm:

1. tabloda müşteri kayıtlarını tut
2. tabloda müşterinin aldığı hizmetleri tut
3. tablo genel olsun bu tabloda hizmetler sabit şeklinde tanımla

yukarıdaki sql için de şöyle bir yol izleyebilirsin 1 ve 2 ci tabloyu ister birleştirirsin sana kalmış 3. tablodaki farkları alırsın almadığı hizmetleri görürsün.


saygılar...
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

hocam saol iyi fikir ama
data bozuldugunda ne olucak?
senin dediğin gibi 3.tabloya almadıklarını yazıcagım. 3 .tablonun bozuldugunu ve 1 satırın onarım esasında uctugununda ne olucak hocam ?

benim yöntem kontrol edip getiriyordu ama cok yavastı kulanıcı kafayı kırıyor!
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

Data bozulmaz durup dururken ;) O zaman mysql i bırak firebirde geç yada mssql e olmadı sybase e daha da olmadı oracle a...

Bir de en mantıklısı bu. Ama sen yine ne istersen onu yapabilirsin tabi.

Birde sana demiştim birkaç sanırım yazılarında !!! işareti kullanma diye. Sonra kimse bana neden cevap vermiyor deme.
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Cevapla