Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İndexlenmiş Alan ve Like Komutu
#1
Like komutu ile bir sorgu oluştururken alan adının indexlenmiş olması fayda sağlar mı?

Örneğin alan adı "TC_NO"  olan bir alana her zaman 11 karakterlik veri kaydı yapılıyor ve bu alana index oluşturulmuş.

Like komutu ile TC_NO ' su içinde "1234" geçen kayıtları bulmak istiyorum.

Alan sayısal yada string olabilir?

Bu sorguda alanı indexlemiş olmamın bir faydası olur mu?

Yoksa indexlemenin bir faydası olabilmesi için arama yaparken TC_NO 'nun 11 karakterinin tamamının mı yazılmış olması gerekir?
Cevapla
#2
(17-03-2023, Saat: 11:16)sunbeki Adlı Kullanıcıdan Alıntı: Like komutu ile bir sorgu oluştururken alan adının indexlenmiş olması fayda sağlar mı?

Örneğin alan adı "TC_NO"  olan bir alana her zaman 11 karakterlik veri kaydı yapılıyor ve bu alana index oluşturulmuş.

Like komutu ile TC_NO ' su içinde "1234" geçen kayıtları bulmak istiyorum.

Bu sorguda alanı indexlemiş olmamın bir faydası olur mu?

Yoksa indexlemenin bir faydası olabilmesi için arama yaparken TC_NO 'nun 11 karakterinin tamamının mı yazılmış olması gerekir?

Eğer ifadenizin başında % veya _ işareti olursa indeks işe yaramaz. Ama like '1234%' (1234 ile başlayan) gibi bir ifade kullanırsanız indeksi kullanır. Cevabımı MS SQL Server 'a göre verdim ama aynı şey çok büyük ihtimalle FireBird için de geçerlidir.
WWW
Cevapla
#3
Mesela şöyle bir sorgu ifadesi var? Tabloda toplamda 8 field var.

     with DataModule1.IBQ_Kisiler do
     begin
        Database := DataModule1.IBDatabase1 ;
        SQL.Clear ;
        SQL.Add('Select * from TBL_KISILER Where TCNO<>''0''') ;
        
        if tcno_bul.Text <> '' then
            SQL.Add('and TCNO Like ' + '''%' + tcno_bul.Text + '%''') ;

        if Adi_Soyad_bul.Text <> '' then
            SQL.Add('and ADI_SOYADI Like ' + '''%' + Adi_Soyad_bul.Text + '%''') ;

        if Baba_Adi_Bul.Text <> '' then
            SQL.Add('and BABA_ADI Like ' + '''%' + Baba_Adi_Bul.Text + '%''') ;

        if Mahalle_Bul.Text <> '' then
            SQL.Add('and MAHALLE Like ' + '''%' + Mahalle_Bul.Text + '%''') ;

        SQL.Add('Order By ADI_SOYADI COLLATE PXW_TURK') ;
        Open ;
     end ;

Burada kullanıcı bu 4 alandan istediği alan yada alanlara göre arama yapıyor. Burada benim bu 4 alanı da indexlemiş olmam fayda sağlar mı?

Bu alanlara tek tek index oluşturdum. Bu yeterli mi? Yoksa ayrıca ikişer, üçer ve dörder alanlı indexler de oluşturmak mı gerekir?
Cevapla
#4
(17-03-2023, Saat: 11:44)sunbeki Adlı Kullanıcıdan Alıntı: Mesela şöyle bir sorgu ifadesi var? Tabloda toplamda 8 field var.

     with DataModule1.IBQ_Kisiler do
     begin
        Database := DataModule1.IBDatabase1 ;
        SQL.Clear ;
        SQL.Add('Select * from TBL_KISILER Where TCNO<>''0''') ;
        
        if tcno_bul.Text <> '' then
            SQL.Add('and TCNO Like ' + '''%' + tcno_bul.Text + '%''') ;

        if Adi_Soyad_bul.Text <> '' then
            SQL.Add('and ADI_SOYADI Like ' + '''%' + Adi_Soyad_bul.Text + '%''') ;

        if Baba_Adi_Bul.Text <> '' then
            SQL.Add('and BABA_ADI Like ' + '''%' + Baba_Adi_Bul.Text + '%''') ;

        if Mahalle_Bul.Text <> '' then
            SQL.Add('and MAHALLE Like ' + '''%' + Mahalle_Bul.Text + '%''') ;

        SQL.Add('Order By ADI_SOYADI COLLATE PXW_TURK') ;
        Open ;
     end ;

Burada kullanıcı bu 4 alandan istediği alan yada alanlara göre arama yapıyor. Burada benim bu 4 alanı da indexlemiş olmam fayda sağlar mı?

Bu alanlara tek tek index oluşturdum. Bu yeterli mi? Yoksa ayrıca ikişer, üçer ve dörder alanlı indexler de oluşturmak mı gerekir?

Böyle bir sorguda indexleriniz işe yaramayacaktır.
WWW
Cevapla
#5
(17-03-2023, Saat: 13:32)csunguray Adlı Kullanıcıdan Alıntı: Böyle bir sorguda indexleriniz işe yaramayacaktır.

Bunun tek sebebi aranan ifadenin baş tarafında % işaretini kullanmam mı?

% işaretini ifadenin sonunda kullansam indexler işe yarar mı?
Cevapla
#6
(17-03-2023, Saat: 14:10)sunbeki Adlı Kullanıcıdan Alıntı: Bunun tek sebebi aranan ifadenin baş tarafında % işaretini kullanmam mı?

Evet


(17-03-2023, Saat: 14:10)sunbe Adlı Kullanıcıdan Alıntı: % işaretini ifadenin sonunda kullansam indexler işe yarar mı?

Evet (sadece sonda kullanırsanız, başa koymamanız gerekir.)
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Tabloda Alan Birleştirme sunbeki 6 809 06-04-2022, Saat: 20:40
Son Yorum: MugenPower
  view tabloya id alan Aktolgali 6 3.132 15-09-2019, Saat: 23:16
Son Yorum: Aktolgali
  Firebird 3 embedded versiyon autoinc alan problemi canbir 5 4.274 21-11-2018, Saat: 22:38
Son Yorum: SercanTEK
  DB de Günlük Artan Autoinc Alan mcuyan 9 5.113 19-02-2018, Saat: 01:35
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi