Bir makale ve yorumlar SQL sorgusu - verimli

6 Cevap php

Ne bir makale ve yorumlar kapmak için en etkili ve verimli sql sorgusu olacak?

O bir SQL sorgu veya iki SQL querys içinde olması iyi olurdu Bu iki tablo (makaleler, yorumlar.) Olurdu? Hız önemli konudur.

Şimdiden teşekkürler

6 Cevap

Hiç de az eğer kayıtları ile çalışmak ne kadar büyük bağlı olarak, hız, çok büyük bir fark var olmamalı onun bir sorgu veya iki olsun.

O tek sorguda halletmek ve okunabilirliği kurban yoksa Şahsen, bir sorgu için tercih olacaktır. Bir mezartaşı olarak, ben bu performansı hakkında endişe zaman zaman performansı hakkında endişe çalışacaktı.

Burada bir sürü kanıya yapma ama ...

Genellikle bir birleşim ile bir sorgu ile yaparak en iyi performansı alırsınız. Eğer veritabanı ve sunucu arasında çok sınırlı bant genişliği, ve katılmak başına pek çok yorumlar (muhtemelen nadir bir durum) varsa iki sorgu tek sorgu çözümü daha iyi performans olacak bir durum görebiliyordu.

Use JOINS to accomplish this, JOINS are faster than writing 2 queries. U can do something like this

SELECT article, comment FROM tbl_article JOIN tbl_comment WHERE tbl_comment.article_id=tbl_article.id

U tbl_comment üzerinde tbl_article ve article_id birincil alan kimliği olması göz önüne alındığında. U article_id yaparsanız bir yabancı anahtar gr8 olacak

Veritabanı web uygulaması (veya quering yapıyor olursa olsun) için farklı bir fiziksel sunucu üzerinde, özellikle eğer iki sunucu arasında basit ağ gecikmesi (bir sorun olabilir ki olabilir yani, diğer bir sunucudan ping süresi Sorgu kendisi micro saniye içinde yürütmek, oysa muhtemelen, milisaniye cinsinden ölçülür.)

Ben en etkili çözüm bir saklı yordam iki sorguları koymak ve yürütmek olacağını hayal ediyorum. Sadece bir veritabanına gidiş-dönüş, bir katılmak için gerek ve sonuçları görüntülemek için gereken minimum veri istemciye geri döndü. Ayrıca, sorgu parametrelendirmesini almak ve saklı yordam için sorgu planı daha çok sunucu önbelleğe olacaktır.

Bu sağlanan dışında herhangi bir less detaylar bir soru hayal etmek zor, ama ben genel anlamda cevap vermeye çalışacağız.

Modern bir ilişkisel veritabanı yönetim sistemi (MySQL, vs) kullanıyorsanız, veritabanının kendisi iyi bunun dışında bilgi almak için nasıl anlamak için beklemek gerekir. Bu nedenle, veritabanına tek sorgular gibi neredeyse tüm sorguları göndermek ve size geri veri almak için en uygun planı belirlemek izin vermelisiniz.

Verileri birleştirmek için kullanılan alanlar endeks için talimat eğer veritabanı iyi yapacak; Eğer zayıf bir performans bulursanız en veritabanı motorları motor bilgilerini almak için kullanılan ve sizin indeksleme artırabilir dayalı planını açıklamak için bir seçenek sunar.

(Bunun gibi) sık sık istekleri için bir MANZARASI (saklı bir sorgu tanım) olarak veritabanında sorgu saklanması ve yerine doğrudan tablolardan daha görünümü sorgulamak için en iyisidir.

Bazı platformlar Eğer veritabanına bir gidiş dönüş ile birden fazla sorgular çalıştırmak için izin verir.

. ADO IE Net çalıştırabilirsiniz:

SELECT col1, col2, whatever from Articles WHERE id=xxx
SELECT colx, coly, colz from comments where arcticle_id=xxx

ve iki veri tabloları ile bir veri kümesini geri almak.