Düzgün sorgu performansını test etmek için nasıl

4 Cevap php

Ben bir argüman olarak kimlikleri bir dizi veya tekil bir kimliği ya götüren bir işlevi var. Bir dizi kabul edilirse, bu kimlikleri sorgu dostu yapmak için virgül üzerinde imploded.

Geçirildi kimlikleri için kayıtlarını güncellemeleri bu fonksiyonun içinde bir sorgu var.

Aşağıdaki gibi sorgu:

"UPDATE tbl_name SET enabled = 1 WHERE ID IN (" . $IDs . ")";

Gibi dizi ve bir şey için sorguda yukarıdaki tha kullanarak bir performans sorunu varsa Şimdi, ben merak ediyorum:

"UPDATE tbl_name SET enabled = 1 WHERE ID = " . $IDs;

sadece tek bir kimlik geçirilir.

Ben aynı kimliği için MySQL sorgu tarayıcıda hem sorguları test edilmiş ve hem sorguları için .02 saniye bir performans var - performansında önemsiz bir fark.

Sadece sorgu tarayıcıda ikisini uygun sorgu performansını kontrol etmek için Tamam bir yolu test ediyor?

Ben gerekli değilse bir fonksiyon iki sorgu ile kodumu kirletmez istemiyorum sadece.

4 Cevap

Ben ikinci sorguyu kaybetmek ve sadece kod daha okunabilir ve sürdürülebilir hale getirmek için ilk bir bırakacaktı.

if (is_array($id)) $id = implode(',', $id);
$query = 'UPDATE table SET marked = 1 WHERE id IN ('.$id.')';

Ya bu örnek sorguları birini alırsınız bu şekilde:

UPDATE table SET marked = 1 WHERE id IN (15);
UPDATE table SET marked = 1 WHERE id IN (21,12,15,16);

İşte MySQL manuel operatör IN kullanımı hakkında ne diyor:

Tüm değerler sabitleri varsa, bunlar ifade ve sıralı tipine göre değerlendirilir. Öğe için arama daha sonra ikili arama kullanılarak yapılır. Bu IN değer listesi sabitler tamamen oluşur eğer çok hızlı olduğu anlamına gelir.

Ben de zaman bir milisaniye veya daha az, özellikle eğer sunucunun zaman daha değerli, çünkü temiz, okunabilir ve bakımı kod yazmak "ne kırık değil fix yok" ve daha iyi take care öneririm. İlk bir uygulamanın performansına bakmak ve tamam o zaman bitti - size zaman yapabileceğiniz diğer şeyler üzerinde hareket. Yavaşsa - saptamak için (basit zaman ölçümleri yapacak) bunu ölçmek ne is, yavaş ve sonra sadece o duruma. Genellikle ne yavaş bazı büyük katıldı sürü ile çok sayıda tablo select dağınık, ancak bu gibi basit bir güncelleme. Ayrıca güncellemeler (genellikle) nadirdir ve kullanıcı can onlar için beklemek olduğunu unutmayın, bu yüzden seçer optimize odaklanmak.

If you are looking to be thrifty on cpu cycles and want performance go with IN . Think of it this way .. you have to take 10 items to ur neighbors house ... which will be faster? taking all 10 at the same time or doing it one by one.. even if its a millisecond , when multiplied with the number of instances , it would become significant.

Sadece u mysql bir sorgu göndermek arka planda ne olacağını hayal, mysql, motor her sorgu derlemek ve sonra onu işlemek ve PHP mysql ur sorgu göndermek için ağ üzerinden iletişim kurmak zorundadır kısmını dont unutmak gerekiyor.

U bir yerine 10 sorgular göndererek Yani .. u işlem süresini çarpın. "Views" standart select ifadeleri daha hızlı tam olarak budur.

Eğer rastgele kimlikleri ile büyük döngüler hem sorguları çalıştırmayı deneyebilirsiniz

Bu .. ben kullanmak ne olduğunu ve aslında bu benim mysql güncellemeniz gerektiğinde ben usualy ne kullanın.

"UPDATE tbl_name SET enabled = 1 WHERE ID = " . $IDs;

Eğer gerçekten bu 2 karşılaştırmak istiyorum ama .. i s o proccess and then you will know which one is the best.. for a single id the preformance is the same.. but i don t 100 id `s için performans aynı olacağını düşünüyorum onlara id bir sürü vermek öneririz. Bana sonuç please.thanks bildirin