Cevaplar için teşekkür ederim.

Serdar Bey,

Sorgunun sonucu aşağıdaki gibi.

mysql> EXPLAIN SELECT DISTINCT `id`, `phone` FROM `_ICS3` IGNORE INDEX
(disposition) WHERE active = 1 AND (LEFT(lastupdated,10) =
LEFT(NOW(),10) AND disposition = 1 OR (LEFT(lastupdated,10) <>
LEFT(NOW(),10))) AND ((((disposition > -6 AND disposition < 6) AND
disposition <> -3 AND disposition <> 3 AND disposition <> 0) AND
attempts < 8) AND active = 1) ORDER BY attempts ASC LIMIT 0,1;
+----+-------------+-------+-------+-----------------+----------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref
| rows | Extra |
+----+-------------+-------+-------+-----------------+----------+---------+------+--------+-------------+
| 1 | SIMPLE | _ICS3 | range | attempts,active | attempts | 5 | NULL |
274083 | Using where |
+----+-------------+-------+-------+-----------------+----------+---------+------+--------+-------------+
1 row in set (0.00 sec)


ikinci sorguda aşağıdaki gibi.



max_length_for_sort_data 1024
max_sort_length 1024
myisam_max_sort_file_size 9223372036853727232
myisam_sort_buffer_size 134217728
sort_buffer_size 16777216
SELECT @@max_heap_table_size; 16777216
SELECT @@tmp_table_size;16777216

Prş, 2010-10-14 tarihinde 10:20 +0300 saatinde, serdar güler yazdı:
> EXPLAIN SELECT DISTINCT `id`, `phone` FROM `ABO3` IGNORE INDEX
> (disposition) WHERE active = 1 AND (LEFT(lastupdated,10) =
> LEFT(NOW(),10) AND disposition = 1 OR (LEFT(lastupdated,10) <>
> LEFT(NOW(),10))) AND  ((((disposition > -6 AND disposition < 6) AND
> disposition <> -3 AND disposition <> 3 AND disposition <> 0) AND
> attempts < 8) AND active= 1) ORDER BY attempts ASC LIMIT 0,1;
> 
> 
> sorgusunun sonuçlarını gönderebilir misiniz?
> 
> 
> bir de 
> 
> 
> show variables like '%sort%';
> 
> 2010/10/13 Salih BiLGiN <[email protected]>
>         Merhabalar,
>         
>         Debian yüklü ve mysql 5.1 bulunan sunucumda bir sorgumda ORDER
>         BY
>         yapmadan herhangi bir performans sorunu yaşamıyorum. Ancak
>         ORDER BY
>         eklediğimde CPU %100  oluyor ve uzun sürüyor.  Sorgum
>         aşağıdaki gibidir.
>         Kayıt sayısı yaklaşık 300bin tablomda.  Ne yapmamı
>         önerirsiniz?
>         
>         
>         SELECT DISTINCT `id`, `phone` FROM `ABO3` IGNORE INDEX
>         (disposition)
>                WHERE active = 1 AND (LEFT(lastupdated,10) =
>         LEFT(NOW(),10) AND
>                disposition = 1 OR (LEFT(lastupdated,10) <>
>         LEFT(NOW(),10))) AND
>                ((((disposition > -6 AND disposition < 6) AND
>         disposition <> -3
>         AND disposition <> 3 AND disposition <> 0) AND attempts < 8)
>         AND active
>         = 1) ORDER BY attempts ASC LIMIT 0,1;
>         
>         _______________________________________________
>         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

Cevap