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
