Merhaba,

USE INDEX optimizer ın seçebileceği birden fazla index mevcut ise tercih
edilirken, optimizer ın index kullanmamayı tercih ettiği durumlarda
durumlarda FORCE INDEX tercih edilmelidir.

Server parametreleri için ise şu parametre şu olmalıdır, bu parametre bu
olmalıdır gibi bir söylem çok da uygun olmaz, server ın özelliklerine göre,
tuttuğunu verinin özelliklerine göre ve yaptığımız sorgunun özelliklerine
göre optimize edilecek ayarlar var. Eğer MySQL i lisanslı alırsanız
beraberinde gelen MySQL Enterprise Monitor serverdaki bazı parametreleri
izleyerek size bu parametreler konusunda yorumlarda bulunuyor. Ayrıca MySQL
in status bilgilerinde yapacağınız bazı hesaplamalarla aynı yorumları
kendiniz de yapabilirsiniz.  (
http://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html)

Kolay gelsin...


2010/9/24 Nuri AKMAN <[email protected]>

> Merhaba Serdar Bey,
>
> select * from listeler
> *force index (  xxxx_islem_tarihi  )*
> where islem_tarihi between "2010-08-10" and "2010-12-31"
>
> Tavsiyeniz üzerine yukarıdaki şekilde yapılca index devreye girdi.
> Teşekkürler. Ancak, USE INDEX ile sonuc alamadım. (islem_tarihi alanına
> xxxx_islem_tarihi adı ile index verdiğim için force index'e bunu yazdım.)
>
> DİĞER TARAFTAN:
> SİZCE, DİĞER SUNUCU PARAMETRELERİM DOĞRU MU? SİZLER NE ÖNERİRSİNİZ?
>
> Selamlar,
> Nuri Akman
>
>
> 2010/9/24 serdar güler <[email protected]>
>
> Selamlar,
>> MySQL in sistem parametrelerinde dolayı index devre dışı kalmaz, index in
>> kullanılıp kullanılmayacağına karar veren mekanizma optimizer , eğer inde i
>> kullanmasının full table scan e göre daha iyi olacağını düşünüyorsanız. USE
>> INDEX, FORCE INDEX gibi hintlerle SQL i zenginleştirebilirsiniz.
>>
>> Kolay gelsin...
>>
>> 2010/9/24 Baris CUHADAR <[email protected]>
>>
>>  Tarihleri integer - unixtimestamp olarak saklamanız, index büyüklüğünüzü
>>> azaltıp, indexleme zamanını kısaltıp, ayrıca sıralama işlemlerini
>>> kolaylaştırabilir.
>>>
>>> integer 4 byte, datetime 8 byte yer kaplıyor.
>>>
>>> Bu işlemler program kodunuzu değiştirmenizi gerektirecektir.
>>>
>>>
>>> On 09/24/2010 02:11 AM, Nuri AKMAN wrote:
>>>
>>> Arkadaşlar,
>>>
>>> MySQL'de listeler adlı bir tablom var ve islem_tarihi adlı alan için
>>> index tanımım var. Tabloda 250.000+ kayıt var.
>>>
>>> SQL1 sorguma 5431 kayıt geliyor ve süre: 0.027 saniye,
>>> SQL2 sorguma 5570 kayıt geliyor ve süre: 3.510 saniye (130 kat daha yavaş
>>> !)
>>>
>>> SQL1 :   SELECT * FROM listeler WHERE islem_tarihi between '2010-09-20'
>>> AND  '2010-12-31'
>>> SQL2 :   SELECT * FROM listeler WHERE islem_tarihi between '2010-09-19'
>>> AND  '2010-12-31'
>>>
>>> Çalışan SQL'i analiz ettiğimde:
>>> SQL1 için sadece 5431 satırı işlendiğini görüyorum
>>> SQL2 için tablonun tüm satırlarının (250.000 satırın hepsinin) işlediğini
>>> görüyorum. Yani, index devre dışı kalıyor :(
>>>
>>> Bu durumun MySQL'in server parametrelerinden birinden kaynaklı olduğunu
>>> düşünüyorum. Fakat bulamadım...
>>>
>>> Bu durumu nasıl düzeltebilirim?
>>>
>>> Selamlar,
>>> Nuri Akman
>>>
>>>
>>> _______________________________________________
>>> Linux-programlama mailing list
>>> [email protected]https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>>
>>>
>>> _______________________________________________
>>> Linux-programlama mailing list
>>> [email protected]
>>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>>
>>>
>>
>>
>> --
>> Serdar Güler
>>
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> [email protected]
>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
>> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>>
>>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>


-- 
Serdar Güler
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap