İçerik
MySQL’de artan (ascending – asc), azalan (descending – desc) yada rastgele (random) dışında bir de field vardır.
Field, bir alanda istediğiniz öğe sıralamasına göre sıralama yapmanızı sağlar ve doğru kullanımda MySQL’in sorgulama (arama) hızını arttırır.
Kullanımı
1 |
select * from [tablo_adi] order by field([alan_adi], veri1, veri2, veri3...) [asc|desc] |
order by field yazdıktan sonra ilk parametre: hangi field‘da sıralama yapacağı, ardından gelen parametreler ise hangi sırayla geleceğidir. Ayrıca not edeyim; duruma göre sırayı tersine çevirmek isterseniz parantez dışına “desc” yazabilirsiniz.
Örnek
Örneğin bir alış-veriş sitesinde kategori ismine göre sıralama yapalım, ve bunu yaparken de field sıralama özelliğini kullanalım. Bunu yaparken 2 adet sorgu yazacağız.
İlk adım kategorileri bir diziye almak;
1 2 3 4 5 |
$sorted_cat_ids = array(); $query = mysql_query("select id from kategoriler order by ad asc"); while ($result = mysql_fetch_array($query, MYSQL_ASSOC)) { $sorted_cat_ids[] = $result["id"]; } |
Şimdi sıra ürünleri getirmekte;
1 2 3 4 |
$query = mysql_query(sprintf('select id, ad from urunler order by field(kategori_id, %1$s)', implode(", ", $sorted_cat_ids))); while($result = mysql_fetch_array($query, MYSQL_ASSOC)) { // işlemler } |
Umarım örnek daha iyi anlamanıza yardımcı olur…
Performans
Performans konusunda detaylı bir araştırma yapmadım fakat yapı-sökücülük yapacak olursam;