Sanırım sunucuyu asıl yoran kodlar aşagıda PHP:

sunucuya baktıgımda | 159111 | makalekullanicisi | localhost | makaledbsi | Query | 0 | converting HEAP to MyISAM | select baslik, id from makale ORDER BY RAND LIMIT 30 |

Ya hiç gerek yok explain falan.. Eğer makale sorgusunda sorgu sonucu yalnızca bir metin gelecekse; sql sorgusunun sonuna da &quot;limit 1&quot; koy bitsin gitsin. Çok kasmaya gerek yok. Milyonlarca row ile çalışıyorsa böyle çok ufak şeylere önem vermelisin. Örneğin yukarda milyonlarla ifade ettiğim gibi çok büyük mysql veritabanları ve yüksek kullanıcı yoğunluğu ile uğraşan sunucularda değişkenlere değer verirken &quot; veya ' kullanımının bile önemi artmakta. Ama senin öyle bir durumun olmayacağını düşünerek diyorum ki; hiç kasma

iyinet aşagıdaki gibi. Hazır bir db yapısıydı. AUTO_INCREMENT hiç bir şey yok. Sadece aşagıdaki gibi zaman baslik, yazi mysql versiyonu 4.1.20

my. cnf'unu optimize edebilirsin ayrıca, timeout sürelerini ve cacheleri. Bu konuda iyinet'in yazdığı topik var mysql optimizasyon diye.

Çok fazla veri olan db lerde ORDER BY RAND baya kasar makineyi, anlık online sayısı fazla ise yer bitirir makineyi, mysql iyice şişer. Bunun yerine hite göre tarihe göre yada id ye göre sıralamaya bak

Merhaba arkadaşlar, bir sistem yazdım sanırım biraz abarttım gibi geldi bu yüzden sunucuyu ilerleyen zamanlarda yoracak kodlar var sanırım. Sizce daha sade nasıl yapabilirim. Php kod blogu: PHP:

Büyük tablolarda RND fonksiyonu sistemi çok fazla yorar. Bunun yerine kayıt sayısına göre rastgele bir kayıt numarası almak tabiki işlemi yüzlerce kez arttıracaktır. Başka bir alternatif düşünecek olursak RND sonuçlarını saatlik yaptırıp çıkan sonuçları depolayabilirsin. geçici bir tablo oluşturup onun içerisine sadece saatlik primary key değerinde olan alandaki verileri eklersen saatte 1 kez kasacak daha sonra kasmayacaktır. Bu işlemi arka tarafta bir cron olarak çalıştırırsan yavaşlama hissedilmez bile.

artık bu kodda yorarsa serverı bizim serverın çökmesi lazım

CREATE TABLE `makale` ( `zaman` varchar(50) NOT lisanssız default '', `makale` text NOT lisanssız default '', `baslik` varchar(100) NOT lisanssız default '', KEY `kelime` ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ilk mesajda geçen kod gayet optimize ve yormaması lazım.

kodu kısaltmaya gerek yok ki ya, bence gayet hızlı calısması lazım.

örnegin rand(1, 500) yapıp bunun üzerine +30 yapıp DESC limit $rand,$rand+30 şeklinde yapsam sizce nasıl olur? Hız konusunda düzeltirmi?

select ile EXPLAIN arasındaki fark nedir?

query cache i kullan bunlar cok hafif kodlar hic bir sorun ıkarmaamsı gerek, ben 90GB veri tabani ile caliştim mysql gayet iyi, sadece index lerini iyi olustur. eger daha fazla optimiz edecem diyorsan EXPLAIN ile sorgularini incele. dahada ileri gitmek istersen pear in timer nesnesi ve db clasi ile sorgularin surelerini olcebilirsn, 0.5 saniyenin ustund kalanlari gozden gecir. EXPLAIN SELECT baslik, yazi, id FROM makale WHERE id=5 ayrica: if(is_numeric { $query = &quot;SELECT baslik, yazi, id FROM makale WHERE id=&quot;. mysql_real_escape_string ; bunun yerine $id=intval ; $query = &quot;SELECT baslik, yazi, id FROM makale WHERE id=&quot;.$id; if ( mysql_num_rows 1) sunlari yap else bunlari yap diyebilirsin.

i. ari' Alıntı: