lostyazilim
tr.link

Mysql Daha Performanslı Sorgular?

13 Mesajlar 1.802 Okunma
lstbozum
tr.link

sovetski sovetski ♛ PHP ♛ Kimlik Onayı
  • Üyelik 03.08.2015
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılımcı
  • Konum Fransa
  • Ad Soyad A** H**
  • Mesajlar 1205
  • Beğeniler 437 / 458
  • Ticaret 2, (%100)
Genelde sorgularımda bir veri çekmek istersem

SELECT * FROM tablo

veya

SELECT * FROM tablo WHERE id='id'

şeklinde kodlarım. Fakat ben * kullanmazsam yani sadece üye id,isim,numara,durum gibi bilgileri çekmek istiyorsam

SELECT id,isim,numara,durum FROM tablo WHERE id='id'

kullanmam performansı artırırmı? birde İNNER JOİN felan kullanımını gördüm amma hiç kullanmadım projelerimde, nedir bu İNNER felan kısaca anlatırmısınız?
 

 

wmaraci
reklam

VoyL VoyL WM Aracı Kullanıcı
  • Üyelik 17.03.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad Ö** Ç**
  • Mesajlar 133
  • Beğeniler 0 / 23
  • Ticaret 0, (%0)
yüzbinler veya milyonlar üzerinde çalışmıyorsanız inanın milisaniye farkını anlamayacaksınız bile hocam. Her sorgunun döndüğü süreyi baz alarak kendiniz bile test edebilirsiniz sorgularınızın performansını.
sovetski

kişi bu mesajı beğendi.

sovetski sovetski ♛ PHP ♛ Kimlik Onayı
  • Üyelik 03.08.2015
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılımcı
  • Konum Fransa
  • Ad Soyad A** H**
  • Mesajlar 1205
  • Beğeniler 437 / 458
  • Ticaret 2, (%100)
VoyL çok güzel cevap hocam teşekkürler SQL da dediğiniz gibi sorguları denedim 0.0007 saniye ve 0.0004 saniyede sonuçlar geliyor yani ortadaki fark 0.0003 saniye buda birşey değil. En iyisi ben kullanıcılarımı toplamaya bakayım)))
 

 

pg13 pg13 Xcode. Kullanıcı
  • Üyelik 01.10.2013
  • Yaş/Cinsiyet 41 / E
  • Meslek BilişimTeknolojileri Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad O** Ö**
  • Mesajlar 321
  • Beğeniler 72 / 101
  • Ticaret 11, (%100)
limit 1 yaptığın sürece hız farkı önemli değildir ancak milyonlarca satır olan bir tablodan veri çekeceğin zaman * yerine ihtiyacın olan alanları tek tek belirtmek ciddi anlamda bir performans artışı sağlayacaktır.

inner join tablo birleştirme yöntemlerinden biridir. ona benzer bir çok join yöntemi vardır. performanstan tamamen farklı bir konudur araştırarak ne işe yaradıklarını öğrenebilirsin.
sovetski

kişi bu mesajı beğendi.

wmaraci
wmaraci

TolgaTuran61 TolgaTuran61 Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 13.07.2015
  • Yaş/Cinsiyet 32 / E
  • Meslek php
  • Konum İstanbul Anadolu
  • Ad Soyad T** T**
  • Mesajlar 61
  • Beğeniler 3 / 4
  • Ticaret 1, (%0)
Hocam birde PDO kullanmanızı öneririm.
 

 

CanerErgez CanerErgez http://ergezcaner.com Kullanıcı
  • Üyelik 17.10.2014
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Bilecik
  • Ad Soyad C** E**
  • Mesajlar 158
  • Beğeniler 6 / 34
  • Ticaret 0, (%0)
Çok Büyük Veriler Yoksa Pek Fark Olmaz , Zaten Çok Veriniz Varsa Da Big Data Protokolüne Girer MySQL Yerine MongoDB Falan Kullanırsınız .
 

 

Caesar Caesar ich bin /root Kullanıcı
  • Üyelik 24.08.2015
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad O** B**
  • Mesajlar 837
  • Beğeniler 77 / 558
  • Ticaret 10, (%100)
Mysql de performans istiyorsanız sorguları, vesaireleri geçtim ilk olarak yapmanız gereken düzgün index oluşturmayı öğrenmektir.

Yük binen verilerde ne server, ne sorgular sizi rahatlatır. Herşer düzgün index atıp atmamanızla alakalıdır.
sovetski

kişi bu mesajı beğendi.

>/dev/null 2>&1

sovetski sovetski ♛ PHP ♛ Kimlik Onayı
  • Üyelik 03.08.2015
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılımcı
  • Konum Fransa
  • Ad Soyad A** H**
  • Mesajlar 1205
  • Beğeniler 437 / 458
  • Ticaret 2, (%100)
TolgaTuran61 zaten scripti PDO ile kodlamıştım ama malesef hosta atınca kodlar çalışmadı :(

Caesar mesela küçük bir örnek verebilirmisiniz?
 

 

3579 3579 WM Aracı Anonim Üyelik
  • Üyelik 30.01.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 2434
  • Beğeniler 686 / 1151
  • Ticaret 1, (%100)
JOIN bir tablodaki veriye bağlı olarak başka bir tablodan veri çekme işlemi diyebiliriz basitçe. Bunu php ile değil de direkt olarak MySQL ile yapıyorsun.

Mesela bir kullanıcıya ait mesajları çekmek için normalde şu mantık kullanılır;


$uye_sorgusu = "SELECT kullanici_id,kullanici_adi FROM uyeler";

// çektik sonuçları, döngüye girelim
while($sorgu_sonucu){

// Döngüde geçerli olan kullanici_İD'ye bağlı mesaj sayısı
$mesaj_sayisi = "SELECT count(mesaj_id) FROM mesajlar WHERE yazar_id='$sorgu_sonucu[kullanici_id]'";
}


Bunu Join'de tek sorguda halledebilirsin.



$uye_sonuc = "SELECT k.kullanici_id,k.kullanici_adi,COUNT(m.mesaj_id) as toplamMesaji
FROM uyeler as k
JOIN mesaj as m
ON m.yazar_id = k.kullanici_id";

while($sorgu_sonucu){

// mesaj sayisi
$mesaj_sayisi = $sorgu_sonucu['toplamMesaji'];
}



vb.
sovetski

kişi bu mesajı beğendi.

sovetski sovetski ♛ PHP ♛ Kimlik Onayı
  • Üyelik 03.08.2015
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılımcı
  • Konum Fransa
  • Ad Soyad A** H**
  • Mesajlar 1205
  • Beğeniler 437 / 458
  • Ticaret 2, (%100)
Kakarotto çok açıklayıcı olmuş teşekkür ederim :)
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al