select performansında Hangisi verimli Olur?

Firebird ve Interbase 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ı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

select performansında Hangisi verimli Olur?

Mesaj gönderen spoke25 »

Merhaba Arkadaşlar. Sormak istediğim yazdığımız bir select ifadesenide ki performansı

Kod: Tümünü seç

 select  alan1,alan2, alan3,........... from urun_hareket 

where urun_no=:urun_kod and  isltar  between  :ilk_tar  and son_tar 

burada where kısmında tanımladığımız urun no alanı bir cok kez tekrar edildiğini için işlem kayıt sayısı kadar yapılacak.

buraya mali doneme ait integer bir alan tekrar eden başka bir alan daha eklesek performans fark edermi?
yani şöyle

Kod: Tümünü seç

select  alan1,alan2, alan3,........... from urun_hareket 

where mali_donem=:mali_dnm and   urun_no=:urun_kod and  isltar  between  :ilk_tar  and son_tar 

hattaa burada mali dönem aralığı belirlendiği için
between de kaldırılabilir.
Yapıya tam vakıf olamadığımız için aklımıza takılanlarıo sormak soracak olanara da bu vesile ile kaynak olması adına cevaplarınızı bekliyorum.
Başlayan Herşey Birgün Bitmek Zorundadır.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Doğal olarak where de indeks lenen alanlar üzerinde arama yapılsa da alan sayısının artması ya da sayısal alanlara nazaran karakter alanların sorgulanması işlem sürelerini artıracaktır. Bu testleri IBExpert te oluşturulacak sorguların sonunda alt kısımdaki özet bilgilerden hangi indekslerin kullanıldığı ve sorgu sürelerini where kısmını değiştirerek gözlemleyebilirsiniz :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Birkaç seçenek;

- Ürün kodu yok, sadece tarih var
- Ürün kodu var, tarih yok,
- Ürün kodu var, başlangıç yada bitiş tarihlerinden birisi var.

Tarih içerde sayısal olarak tutulduğundan karşılaştırılması kolay bir alandır.

Tablo üzerinde;

kod + tarih

ve

tarih + kod (kod opsiyonel)

şeklinde iki adet index işinizi çözecektir.

Bununla birlikte bu tabloda kayıt sayısı milyonlarca olacaksa ve tarih bazında gruplama/sıralama vs karmaşık query lere gidilecekse, o zaman;

Ürün hareket başlıbaşına bir tablo değildir sanırım. Tarih bilgisi olan bir üst tablo vardır muhakkak. Tarih aralığını bu tablodan, ürünü ise urun_hareket tablosundan filtreleyebilir/gruplayabilir

siniz.

Misal ocak ayı gibi tarihten bir yeri çıkarıp filtrelemek gerektiğinde index kullanılamayacağından, bu son önerdiğim metodla performans çok farkedecektir.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Aşağıdaki bağlantıda, Performans ile ilgili yapılması gereken belli başlı konuları örneklendirerek (kodlama örneklemesi değil de kullanım örneklemesi ile) anlatmıştım.

Doğan'ın yazısına ek olarak orayı da bir oku, kafanda daha net şekillenecektir.

viewtopic.php?t=581&highlight=performans+tuning


Kolay Gelsin

Not : Benim yazmış olduğum yazıda geçiyor açıklamalar.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

Yteşekkür ederim üstadlar konu anlaşılmıştır
Başlayan Herşey Birgün Bitmek Zorundadır.
Cevapla