![]() | |
| | #1 (permalink) |
| Cevizci Üyelik Tarihi: 02/2003
Mesaj: 165
|
selamlar. MySQL de bir adres tablosu oluşturdum ve 'id' primary key,'adi' index,'soyadi' index olarak belirledim. bir listeleme yaptıracağım. mesela, SELECT adi,soyadi,adresi FROM adres_table sorum şu.bu select cümlesinin sonucunu adi index'ine göre nasıl getirtebilirim? adi index olduğu için kendisi otomatikman adi alanına göre sıralı mı getirir?yoksa 'order by adi' mı demem lazım? tabloya rasgele 500 bin kayıt attım.adi alanina göre order by yaptım. aynı sorguyu index olmayan başka bir alan göre yine order by kullanarak çalıştırdım. hemen hemen aynı sürede sonucu getirdi. adi hanesinin index olmasının avantajını nasıl kullanacagım? |
| | |
| | #4 (permalink) |
| Cevizci Üyelik Tarihi: 02/2003
Mesaj: 165
|
soruyu daha ayrıntılı yazıyorum: haber_table adında bir tablom var. alanlar: yayin_adi yayin_tarihi haber ... şeklinde. index alanlarım: index_1 : yayin_adi + yayin_tarihi index_2 : yayin_tarihi + yayin_adi 2 milyon dan fazla kaydım var. bir yayin_tarihi ne ait ortalama 20 bin kayıt bir yayın_adi na ait ortalama 30 bin kayıt var sorgum şu şeklide başlıyor select yayin_adi, yayin_tarihi, ..... from haber_table where .... where den sonraki kısım ekrandan alınan parametrelere göre şekilleniyor. ekrandan alınan parametreler arasında yayin_adi ve yayin_tarihi de var. yayin_adi çoklu seçimli, yayin_tarihi iki tarih aralığı şeklinde. şimdi, ekrandan tek bir yayin_adi seçmişse index_1 kullanılmalı ki sonuçlar hızlı gelsin, veya başlangıç ve bitiş yayın_tarihleri aynı ise birden fazla yayın_adi seçilmişse index_2 kullanılmalı ki sonuçlar hızlı gelsin. buradaki sorum şuydu: hangi index in kullanılacağını nasıl bildireceğim? Yanlış bilmiyorsam ORACLE da hangi index i kullanacağı belirlenebiliyor SQL cümlesinde. ben yukarıdaki durum için çeşitli denemeler yapmıştım. ancak hız konusunda pek bir verim alamamıştım. yani index_1 i kaldırdığımdaki sorgularla index_1 vakenki sorgu hızlarında bir değişme olmamıştı. (index_2 yi hiç kaldırmadım) sanki sürekli index_2 yi kullanıyor gibiydi. umarım açık olmuştur. |
| | |
| | #6 (permalink) |
| Cevizci Üyelik Tarihi: 02/2003
Mesaj: 165
|
"İndeks 1 ve 2 aynı özelliklere sahip olduğundan..." cümlesini tam anlamadım. Yani özellikleri nasıl aynı oluyor? Birinin önceliği yayın adına göre birinin ise yayın tarihine göre. sadece, yayin_tarihi + yayin_adi indexi varsa ve ben sadece 'Capital' in tüm kayıtlarıyla ilgili bir sorgulama yapacaksam ve 2 milyon kayıt varsa, 2 milyon kaydı da incelemez mi? çünkü bu yayın adı na ait bilgiler tüm yayın_tarihi bilgilerine dağılmış durumda. yani 01.01.2005 tarihinde de bilgi olabilir 27.12.2005 tarihinde de. bu iki tarih aralığında ise neredeyse 2 milyona yakın kayıt var. aynı sorgu için yayin_adi + yayin_tarihi şeklinde bir index olsa ve bu index i kullansa max 30 bin kaydı sorgulayacak. Çünkü herbir kayıt için ortalama 30 bin kayıt mevcut. Bir bilgi eksikliğim olduğu kesin. |
| | |
| | #7 (permalink) |
| Registered User Üyelik Tarihi: 01/2003
Mesaj: 6,337
|
İndeks varken bütün kayıtları sorgulamaz. İndeks yardimiyla, ilgili kayıtların yerlerini öğrenip doğrudan ilgili kayıtlara gider ve dolayısıyla sadece gerektiği kadar kayda bakar, fazlasına değil. Birleşik indeks kullanmak yerine tek alanlı 2 indeks tanımla. Biri tarihe, diğeri ise yayın adına göre indeksleme yapsın |
| | |
| | #8 (permalink) | |
| Read Only Üyelik Tarihi: 11/2005
Mesaj: 595
| Alıntı:
index_2 : yayin_tarihi seklinde index kurarsan MySQL veya her neyse cok rahat indexleri kullanacaktır. Bildigim kadariyla SQL cumlelerindeki Where kosulları sondan cozumleniyor.(Yanlista biliyor olabilirim)... Buna gore tarih koşulunu where icinde sona koy. MySQL(Baska programda olabilir) once yayin_tarihi indexi yardımıyla kayıtları suzer daha sonra yayin_adini cozumler ve yayin_adi indexini kullanarak suzulen verileri bir daha suzer... NOT: yayin_tarihi indexi Yayin_adi indexinden cok daha hizli calisir.Cunku Tarih aslında geri planda YIL + AY + GUN seklinde bir sayı olarak tutulur ve buda performans saglar... Bunun icin Tarih indexini Where cumleciginin sonuna almanı istedim... Kolay Gelsin... | |
| | |
| | #10 (permalink) |
| Cevizci Üyelik Tarihi: 12/2005 Yer: İstanbul
Mesaj: 66
|
Where kosulları sondan cozumleniyor cümlesi doğrudur. Bunun için filtreleme yaparken veriyi en çok süzecek kriteri en sona yazmak gerekir. Ayrıca indexlerin faydasını where kısmında kriter yazarsan daha rahat görürsün. Not: Bütün RDBMS'lerde yapacağın işlem yüküne göre bazı şeylerden vazgeçmen gerekir. Örneğin OLAP türü projelerde index kullanmak işlemleri oldukça hızlandıracaktır. Fakat OLTP türü işlemlerde ise yavaşlatacaktır. Nihayetinde index kullanmanın da bir maliyeti vardır. (Ekstra Not: MCSD eğitimlerinde, daha çok OLTP türü işlemleri üzerinde durulur.) |
| | |
![]() |
| Bookmarks |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konuyu açana göre | Forum | Cevap | En Son Mesaj |
| where sorgusunda yardım | SeVeRaL | Veritabanları & SQL | 4 | 30/06/2006 18:35 |
| C# sql sorgusunda değişken | esabah | C# | 3 | 22/07/2005 13:14 |
| 5 html sayfa var bunları index.php veya index.html nasıl yerleştire bilirim | asiklarnet | PHP | 6 | 14/09/2004 10:20 |
| Php içinde select ile seçilen verinin başka select içinde gelmesi | yumert | PHP | 6 | 12/11/2003 14:05 |
| Select te index secimi | bahtiyarsenoglu | Veritabanları & SQL | 1 | 15/10/2003 18:59 |
| Reklamlar & Desteklenenler | |
| Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv | |