Php script optimum MYSQL sorgu numarası nedir?

7 Cevap php

I birçok mysql betiklerinizin bir sayfasında göndermek ve en uygun sorgu numarası nedir sorgular this.How konusunda emin olamaz bu yüzden profesyonel bir programcı değilim. Stackoverflow Web Sitesini en Örneğin bu soruların yazarlarını gösterir sorularını listeler. stackoverflow yazarın bilgi almak için mysql sorgu foreach soru gönderir olduğunu. ya da 1 sorgusu gönderir ve alır tüm kullanıcı verilerini ve sorular ile maç?

7 Cevap

Sorgu sayısına odaklanmak etmeyin. Bu, yararlı bir metrik değildir. Bunun yerine, bir kaç başka şeyler bakmak gerekir:

  • kaç sorguları çoğaltılır?
  • kaç sorguları veri setlerini kesişen var? ya da başka bir alt kümesidir?
  • ne kadar süre çalıştırmak için ne yapılabilir? endeksleri kontrol etmek için ortak olanları profilli var?
  • kaç gereksiz yere karmaşıktır?

    Ben üç basit sorguları gördüm birçok kez birlikte aynı bilgileri döndürülen bir kompleks birinin zaman onda yürütmek. Aynı şekilde, SQL güçlü, ancak PHP bir döngü içinde daha kolay ve basit olurdu SQL bir şeyler yapmaya çalışıyor deli gitmez.

  • ne kadar ilerici işlem yapıyorsunuz?

    Eğer büyük veri setleri ile uzun sorgular kaçınamaz eğer veritabanından geliyor gibi veri kümesini işleyebilir, böylece algoritma yeniden düzenlemek için deneyin. Bu MySQL tampon sorgu kullanmak ve sizin bellek kullanımını geliştirir sağlar. Bunu yapıyoruz ederken çıktıyı sağlayabilir ve eğer, er ilk çıkışını provinding tarafından sayfanızın algılanan hızını artırabilir.

  • Bu verilerin bazıları ne kadar önbelleğe alabilir? Hatta birkaç saniye için önbelleğe derece yardımcı olabilir.

Ben 8 altında mayın tutmak istiyorum.

Cidden, bu oldukça anlamsız. Varsayımsal bir sayfada 800 sorguları olması için bir nedeni varsa, o zaman devam edin ve bunu yapabilirdi. Normal şartlar içinde 50 üzerinde görmek için şaşıracaksınız ama bu gün, bu fark etmek zor olabilir ama muhtemelen (sayfa başına sorgu sayısı sadece ne yaptığınızı bağlı olacağını göreceksiniz ne kadar çok Eğer DB soyutlayarak eğer yaptığınızı) uzak çağırır.

Slow queries matter more

Ben bir sayfada 35 sorguları vardı ve gerçekten yavaş koştu belirli bir PHP tabanlı bir forum yazılımı olarak sinirli olmak için kullanılan, ancak bu uzun zaman önceydi ve ben belirli bir yükleme yavaş koştu ki nedeni 35 olan ilgisi olmadığını artık biliyoruz Bir sayfada sorgular. Örneğin, bu sorgu sadece bir ya da ikisi çoğu zaman almıştır. Bu sadece iyi yerleştirilmiş indeksler tarafından giderilen gerçekten yavaş sorguları bir çift vardı.

I think that identifying and fixing slow queries should come before identifying and eliminating unnecessary queries, as it can potentially make a lot more difference.
Consider even that three fast queries might be significantly quicker than one slow query - number of queries does not necessarily relate to speed.

Ben 800 üzerinde sorguları vardır (tür aslında sadece bir yönetici tarafından çalıştırılmak üzere tasarlanmış bir test case / tanı aracıdır) bir sayfa var ama bu saniyeler içinde çalışır. Ben hepsi gerçekten basit sorgular vardır sanırım.

Try caching

Işlevselliğini azaltmadan, gerçekten yapmanız sorgu sayısını azaltmak olabilir uygulamanın bölümlerini önbelleğe için çeşitli yolları vardır. Gibi Kütüphaneler memcached bu gün bu trivially kolay ve henüz gerçekten hızlı koşmak. Bu aynı zamanda performans sorgu sayısını azaltarak daha çok iyileştirmeye yardımcı olabilir.

If queries are really unnecessary, and the performance really is making a difference, then remove/combine them

Sadece ilk, yavaş sorguları arıyor ve onları optimize veya bunların sonuçlarını önbelleğe düşünün.

Gerçekten sorgu optimal bir sayı yoktur. Açıkçası daha az sorgular daha iyi yapmak.

Vb Hibernate, uskur, Doktrini gibi ORM çeşit kullanıyorsanız bunlar farklı elle SQL yazmak olsaydı daha sorguları üretecektir. Yani StackOverflow bir ORM kullanıyorsa onlar birden fazla sorgu soruları erişen ve soruları oluşturulan kullanıcımız var olabilir. Ya da sadece düz bir SQL ile katılmak kullanabilirsiniz.

Gerçekten aslında SQL oluşturmak için perde arkasında ne kullandığınız teknolojiye bağlıdır ve.

Bu daha iyi anlamak için araştırma edilmesi gerekenler:

Ben de gittim ve bu iç içe sorgular entegre Geçenlerde benim bazı eski kodu üstlenmeden başladı ve sonra tekrar ben, vb sorgular SQL sorguları yazmak ve katılır nasıl bilmiyordum çünkü ben döngüler sorgular içinde çok kullanılan olduğunu fark etti bir sorgu içine yani bir kerede tüm veri alabilir ve daha sonra iç içe bir şekilde bunun üzerinde döngü.

Bazı durumlarda, bu önemli ölçüde daha hızlı sayfa yükleme yaptı.

Ergo: PHP ile SQL ve daha az ile daha fazlasını yapmaya başlayabilirsiniz böylece Kesinlikle SQL olanakları hakkında öğrenmeye değer.

Eğer daha fazla ihtiyaç ve olduğunca az. Başparmak buradan herhangi bir kural yoktur. Bazı web siteleri db erişim bir sürü gerektirir ve diğerleri yok.

Bence olarak onun yazılmış ise SO aslında sadece bir kaç db çağrıda bulunulmuştur. Bu bir, bir soruya bir cevap gibi bir sayfada, orada olur:

1) session verification, if you are logged in. 2) current user info, to get the user bar at the top of the screen and you medal count. 3) get the question info as well as the questioner's/last editor's info. 4) retrieve a count of tags used in this question. 5) select all responses and responder data in one shot.

Ve bunun hakkında. Eğlenceli kısmı soru kapalı anahtarlı ne kadar:

// this returns one row per revision
select q.*, u.name, u.u_id, u.points, u.gmedal, u.smedals, u.bmedals
from questions q left outer join users on q.u_id = u.u_id
where q_id = :q_id;

// this used to display the tags below the question and the tag counts on the right
select t.name, count(*)
from tags t left join tags q on q.tagid = t.tagid
where t.q_id = :q_id

// this can also get multiple revisions
select a.*, u.name, u.u_id, u.points, u.gmedal, u.smedals, u.bmedals
from answers a left outer join users on a.u_id = u.u_id
where a.q_id = :q_id

Bu ayrı olarak depolandığı gibi çeşitli sayımları (oy-up, tercih soru) de masaya önbelleğe olduğunu varsayar.

Optimal numarası kullanıcının beklediği bilgileri görüntülemek için ihtiyacınız olan pek çok olduğunu. Ben hep tek haneli tutmaya çalışın. Sadece tek bir sorgu alır böylece birkaç sorguları alır, ancak nadiren değiştirir bilgi için, ben bir genel önbellek tablo sonuçlarını önbelleğe. Bu yapısına erişmek için kolay bir korumak için tefrika dizi olarak saklayın.

Ben ilk WordPress yüklü, ben taban yüklemek 20 sorgu üzerinde yaptığını dehşete oldu! Eklentiler (yeraldığını bazı) bu sayıyı artıracak. Ama önbelleğe alma ile, yani sıfır (SuperCache) indirgenmiş olabilir. İçerik her 10 dakikada bir değişiklik yaparsa, neden dinamik her darbeden bunu oluşturmalıyız?

Çok uç her sayfa görüntüleyen kullanıcı için özelleştirilmiş, benzersiz içerik Facebook gibi bir platformdur. Sen her zaman sorgulamak zorunda.

Ama ne olursa olsun, ben nadiren çift haneli sorgu sayılarını vurmak gerek görmek.

Eğer hız öncelik ise 0 uygun olacaktır.