birleşimler kullanarak veya PHP / MySQL birden fazla sorgu

4 Cevap php

Here i need help with joins. I have two tables say articles and users. while displaying articles i need to display also the user info like username, etc. So will it be better if i just use joins to join the articles and user tables to fetch the user info while displaying articles like below.

SELECT a.*,u.username,u.id FROM articles a JOIN users u ON u.id=a.user_id

OR can this one in php. First i get the articles with below sql

SELECT * FROM articles

Ben olsa makaleler dizisi i döngü almak ve aşağıdaki gibi, her bir döngü içinde kullanıcı bilgi almak Sonra sonra

SELECT username, id FROM users WHERE id='".$articles->user_id."';

Which is better can i have explanation on why too. Thank you for any reply or views

4 Cevap

Üçüncü bir seçenek daha var. Önce makaleleri alabilir:

 SELECT * FROM articles

Sonra bir seferde tüm ilgili kullanıcı adlarını almak:

 SELECT id, username FROM users WHERE id IN (3, 7, 19, 34, ...)

Bu şekilde sadece iki kez yerine bir çok kez veritabanı vurmak zorunda, ancak çoğaltılmış verileri alamadım. Ilk sorgu, bu özel durumda çok iyi çalışır diye yine sorgularda bu kadar çoğaltılmış veri yok gibi görünüyor, o söyledikten sonra.

Ben muhtemelen çünkü sadeliği bu özel durumda ilk seçeneği, ancak her kullanıcı için daha fazla bilgiye ihtiyacınız varsa o zaman üçüncü seçeneği ile gitmek istiyorum. Bu hızlı, ne de basit ne olduğu gibi muhtemelen ikinci seçeneği tercih ediyorum.

(Yani bir kullanıcı birçok yazılar yazmıştır) yinelenen bir çok veri almak olacak eğer ayrı sorguları yapmak daha iyi olur - Bu sorgular dönen ne kadar veri bağlıdır.

Çoğaltılmış çok fazla veri yoksa, her zaman sadece veritabanı sunucusu tek bir ziyaret yapmak zorunda gibi tercih edilir katıldı.

İlk yaklaşım uygulanabilir / mümkünse daha iyidir:

SELECT a.*,u.username,u.id FROM articles a JOIN users u ON u.id=a.user_id
  • Daha az kod yazmak zorunda
  • Birden quries çalıştırmak için gerek yoktur
  • Birleşimler kullanırken idealdir mümkün olduğunda

Bir sorgu ile makaleler, daha sonra her bir kullanıcı adı almak once ve bunu göstermek, her zaman (bir dizi ya da ne olursa olsun onları önbelleğe) değil.