Daha hızlı MYSQL sorgulamak veya PHP mantığı kullanmak

5 Cevap php

Ben bir kategori id kapalı tabanlı birden kategorilerden birçok başlıkları çekecek bir sayfa var.

Tüm başlıkları çekin ve ardından / tabloların ifelse veya her her kategoriden başlıkları içeren birden sorguları çalıştırmak daha iyidir eğer PHP ile onları çözmek için daha mantıklı merak ediyorum.

5 Cevap

Neden bir sorguda bunu değil mi? Gibi bir şey:

SELECT headline FROM headlines WHERE category_id IN (1, 2, 3, ...);

PHP içinde başlıkları filtre varsa, atmadan olacak kaç düşünüyorum. Eğer başlıkları sadece% 10 kaldırılması ile sona varsa, o uzakta sonuçların 90% atma olurdum zaman olduğu kadar, olmaz.

Bu tür sorular durumun iyi ders belirler çünkü cevap vermek her zaman zordur. Gerçekten doğru cevap sadece daha iyi yollar, yok asla. Benim durumumda gerçekten her zaman böyle memcached gibi bir önbelleğe alma motoru kullanarak herhangi bir pahalı operasyonun sonuçlarını önbelleğe denemelisiniz çünkü PHP veya veritabanı işi yapmak için teşebbüs farketmez. Bu şekilde sonuçları önbelleğe ve kullanıma anında hazır olacak çünkü db veya php kendisi çok fazla zaman harcamak için gidiş değildir. Onu aşağı geldiğinde, ne düşünüyorum performans darboğazları sadece tahmin vardır, sen xDebug gibi bir araç kullanarak uygulama profil unlss.

Birçok eşzamanlı sorguları varsa darboğaza sebep olabilir, çünkü, DB aşırı değil genellikle daha iyidir.

Birden istekleri işlemek için ihtiyacı olduğu Apache konuları ödemek olacaktır Ancak, PHP içinde işleme işleme, usually iyidir.

Her zamanki gibi, tüm aşağı gelir: "Ne kadar trafik var"

MySQL zaten sizin için verilerin seçilmesini ve sipariş yapabilirsiniz. Ben tembel olabilir ve bu kullanmanızı öneririm.

Ayrıca ben bir kerede tüm kategoriler ve bunların başlıkları getirir a (1) sorgu için bakmak istiyorum. Kategori, PublishDate falan ORDER BY yapardınız?

Veritabanına her gezi bir şey maliyeti. Eğer o zaman bir şey maliyetleri görmezden karar ekstra veri döndürülüyor. Yani veritabanı budama yapalım neredeyse kesinlikle daha iyi.

Ben kolayca kod bunu yapabilirdi ise bir, ne gerek veri karar sorgu derece karmaşık ve veritabanı optimize etmek için bu nedenle zor kılan bazı durumlarda ile gelip eminim. Ama biz o vb karşı "kategorisindeki = 'Sağlık' adlı öyküsünden başlığını seçin" "" kategorisindeki = 'Politika' adlı öyküsünden başlığını seçin "ardından" kategorisindeki = 'Sports' adlı öyküsünden başlığını seçin "bahsediyoruz eğer kategorisini, ('Sağlık', 'Spor', 'Siyaset') kategorisinde ", ikincisi açıkça daha iyi hikaye başlığını seçin.