21.YILTürkiye'nin en eski ve aktif online oyun platformu, Ultima Online, Counter-Strike ve diğer online oyunlar hakkında Türkçe haber, bilgi ve forum sunuyor. Türkiye'nin en eski ve aktif online oyun platformu, Ultima Online, Counter-Strike ve diğer online oyunlar hakkında Türkçe haber, bilgi ve forum sunuyor.
  • ANASAYFA
  • ULTIMA ONLINE
  • FORUM
  • DOKÜMAN
  • İNDİR
   Üye ol    Giriş
132
31
  1. Anasayfa
  2. Ultima Online
  3. Doküman
  4. SphereWiki
  5. MySQL
  6. Mysql ipuçları detaylı anlatım - Bölüm 1
Leon Jade

Mysql ipuçları detaylı anlatım - Bölüm 1

  • Leon Jade
  • Leon Jade
  • 2009-08-14 00:42
  • 6 Yorumlar
  • 5167 Görüntüleme

Öncelikle herkes'e selam,

Ultima-Strike'de baktım ki fazla mysql hakkında bilgiye sahip olan kişi yok ve bende böyle bir döküman hazırlayayım sizlere sunayım dedim. Affınıza sığınarak söylüyorum bilen değil - Detaylı şekilde bilen yada anlatan yok - yanlış anlaşılmalar olmasın. Seriler şeklinde sizlere birazda olsun mysql database sistemini tanıtmaya çalışacağım. Ufak tefek yazım hataları olursa kusura bakmayınız.


Tanıtım 1'e başlayalım.



Şimdi ilk önce ufak tefek detaylara girelim ufak dediğime bakmayın makinanizi ek yükten kurtaracak ufak ipuçları. Bunları yaptıkdan sonra eminim çok daha iyi performans aldığınızı göreceksiniz.

1. olarak yanlış sorgu şekli olan " * " kavramı

Sorgu şekli 1;

Varsayalım ki mysql den playerların isimlerini çekip listeleceğiz. Fakat databasemizde " charName,charKarma,charFame,charKill,charUid,charGold,insertDate "

gibi uzayan sürüsüne field var aşşağıdaki sorgu bizim yapmak istediğimiz iş için çok yanlış bir sorgu bakalım ve görelim:

"select * from playerList" -> bu sorgu bize " charName,charKarma,charFame,charKill,charUid,charGold,insertDate " bu fieldların hepsini verecekdir

ama biz hangisini kullanacağız ? Sadece charName yanına birde button ekleticeksek charUid gerekli bunun için doğru olan sorgu şöyle olmalıdır ;

"select charName,charUid from playerList" bu şekilde performans artmış olucak ve gereksiz yükden makinanız kurtulmuş olacakdır. Diyeceksiniz ki nasıl ?

Şöyle bir düşünün 40 player listeliyorsunuz ve hepsinin 3kb lık dataları çekiliyor bu da her çekildiğinde Ram üzerine 120 kb veri çekilmesi anlamına

geliyor, peki biz sadece 2 field almış olsaydık ? Bu boyut 10 kb a kadar düşmüş olacakdı.

2. olarak num_rows kullanımının hataları ;

"select id from playerList" böyle bir sorguyu num_rows ile toplamak yerine şöyle yapabiliriz;

"select count(id) as sayi from playerList" yapıp fetch_assoc (db.row.0.sayi anlamına gelmekte) yaparak mysql'i yine bir yükten kurtarmış olup 2 kere

saymasını engellemiş oluyoruz.

3. olarak insert kullanımındaki hata ;

Genelde gördüğüm sorgular üzerine konuşayım insert yapan kişiler şu şekilde işlem yapiyor;

"insert into playerList values(NULL,'<name>','<karma>','<fame>','<kills>','<uid>','<gold>','<serv.time>')"

Gibi devam eden ve field sayısı kadar datayi sistem'e insert etmeye çalışan saçma bir insert şeklini kullanıyor fakat, MysQL in bize sunduğu güzel şeyleri kullanmak aklına gelmiyor örneğin bir Tarihi <serv.time> olarak kaydetmek yerine mysql'den Timestamp yada Datetime kullanıp Current_Date seçeneğini işaretlemiş olsaydı bu field'a insert yapmak zorunda kalmazdı yada... id field'i otomatik gelen sisteme tanıtmış olsa bile NULL olarak kaydetmek yerine kaydetmemeyi tercih etseydi tekrar mysql bunu algılamak için yorulmazdı. Bunun için nasıl bi sorgu yazılmalı ?

"insert into playerList (charName,charKarma,charFame,charKill,charUid,charGold) values ('<name>','<karma>','<fame>','<kills>','<uid>','<gold>')"

Böyle bir sorgu yükü daha azalmış olacak ve hangi field'ı nerede kaydetmek ve nasıl kaydetmek istediğinizi ayarlayabilecekdiniz. Ben mesela şöyle kaydetmek istiyorum ;

"insert into playerList (charGold,charKarma,charFame,charName,charKill,charUid) values ('<gold>''<karma>','<fame>','<name>','<kills>','<uid>')"

Böyle yapınca fieldlara kaydedilen verilerin yeri değişecek mi ? Tabiki hayır.


Bu bahsettiklerim sadece ufak ve genelde gördüğüm scriptlerde yapılan hatalardan 1-2 tanesidir.

Gelelim gerekli olan ve uğraş verici olan şeylere;

Bir tablomuz var ve adamın sürekli artan bi puanı var? Sürekli adam birilerini kesiyor ve her kesdiğinde insert yapiliyor (Gereksiz update yapmak çözümdü

fakat siz böyle yazdınız neyse..). Bunu toplamak için sürekli While For gibi döngülere giriyorsunuz, gereksiz!

select sum(playerPoint) as point from playerPoints where player = '<uid>'

Bu sorgu ne işe yarar? uid ini verdiğiniz player'ın tüm puanlarını toplar ve size point olarak geri döner bunu şu şekilde geri alabilirsiniz Sphere'de "<db.row.0.point>" bu şekilde size gereken çıktıyı vericekdir. Sizin while ile yada for ile topladığınız kullanıcı puanı ne kadarda uğraş verici dimi ?

İlerleyen derslerde olacak anlatımlar :

* Gruop Kullanımı
* Group Concat kullanımı
* Left join kullanımları (2 tabloya aynı anda eş değer bağlantılar yapmak örneğin playerList ile playerPoits'i birbirine bağlamak)
* Left kullanımı
* Mid kullanımı

5 konudan sonra diğer anlatımda da ondan sonraki anlatımlar yer alacakdır.


Problem yaşayanlar döküman altına yazarlarsa sorunlarını, çözümü en kısa sürede elinizde olacakdır. Kolay gelsin.


Dip Not : Bu döküman hakkı Leon Jade (Yunus Emre Kütük)'ye aitdir. Başka bir portal yada bir sitede izinsiz,site ismi ve yazarı belirtilmeden kullanıldığı taktirde site hakkında İnternet Hakları ve yasalar gereği işlem yapılacağını tarafımca belirtirim.

Teşekkürler Leon Jade.

Değerlendirmeler

0 (0)

0 Kullanıcı

Üye Ol veya Giriş Yap

Bu içeriğe yorum atmak istiyorsanız hemen üye olun veya giriş yapın.

Discord ile Bağlan
Twitch ile Bağlan
Steam ile Bağlan
Google ile Bağlan
Yorumlar (6)
Leon Jade
Leon Jade 2009-08-16 00:31

[b]İlerleyen zaman içerisinde Sphere-Mysql yerine hiç bilmeyenler için mysql dökümanı eklenecekdir.[/b]

Basic
Basic 2009-08-14 21:14

yap ya sql öğrenme aşkıyla yanıp tutuşuyom burada :D

Aldarson Avatar
Aldarson 2009-08-14 16:53

:)

Xantier Avatar
Xantier 2009-08-14 10:26

Sallıyo hepsi yalan :P

Leon Jade
Leon Jade 2009-08-14 09:05

[b]Onlarla ilgili dökümanlar mevcut diye ordan başladım. Eğer gerekliyse o tarz bi anlatım onuda yaparız :)[/b]

Basic
Basic 2009-08-14 03:55

abi keşke daha temelden başlasaydın :) ben yine anlamadım :D:D

Sadece kayıtlı kullanıcılar yeni yorum yapabilir.


Ultima-Strike Discord
Benzer Sayfalar
  • Windows ipuçları

    2005-09-19 22:29

  • Windows İpucları III

    2006-05-03 19:45

  • HL I Boss ipuçları

    2008-07-29 22:01

  • Microsoft Ipucları Devamı

    2006-05-03 19:44

  • BulletProof ile FTP Kurulumu- (Resimli Anlatım)

    2006-10-12 20:17



  • Son Forumlar
  • Sayfalar
  • Nefrelius
    Guild Dominion & Signal System | Üreticiler Bile...

    Ultima Online 9 saat önce

  • Montana LoveLACe
    Paxhistoria yapay zeka destekli web tabanlı...

    Diğer Oyunlar 2 gün önce

  • boosterx
    UO:Nimloth Yeniden Doğuyor !

    Sunucular 6 gün önce

  • Ege ERKEK
    2025 CS 1.5 TÜRK SUNUCUSU AÇILDI

    Sunucular 1 hafta önce

  • Vanq
    UO Lord British Gazinosu #5 Yayında!

    Duyurular 1 hafta önce

  • Algos
    Üyeliği 15 yıl ve üzerinde olanlar.

    Ultima Online 1 hafta önce

  • Deathwave
    Valheim’e Ultima Online Modu

    Ultima Online 1 hafta önce

  • Ege ERKEK
    Elit Donanım Modülü (EDM) | Üretimin Doruğu (Yeni...

    Ultima Online 1 hafta önce

  • JoannaLevesQue
    Üyeliği 18 yıl ve üstünde olanlar.

    Ultima Online 2 hafta önce

  • Ege ERKEK
    Kader Masası | Seçimin Yazgını Belirleyecek (Yeni...

    Ultima Online 2 hafta önce

  • Ege ERKEK
    İçerik Kaşifi Aramızda!

    Duyurular 2 hafta önce

  • Venus
    World of UO'da Geçmişe Yolculuk Başladı

    Sunucular 2 hafta önce

  • Nefrelius
    Alcor UO Reborn

    Sunucular 3 hafta önce

  • Ege ERKEK
    Ultima Online'da Alkol Üretme Sistemi!

    Ultima Online 3 hafta önce

  • Lucretius
    Son yıllarda UO tercihiniz: RP, PP (Power Play)...

    Ultima Online 3 hafta önce

  • MMORPG'de Devrim Yaptı: Sınıf Tanımayan Ultima Online!

    2025-12-27 21:13

  • Ultima Online'ın Oynanışını Tamamen Değiştiren Harita Kararı!

    2025-12-23 23:17

  • Yeni Başlayanlar İçin Ultima Online

    2025-11-27 19:07

  • Skill seçimlerinizi planlamak artık çok daha kolay

    Ultima Online Karakter Yapılandırma Aracı Bölümü Açıldı!

    2024-10-31 22:47

  • Ultima Online topluluğu, ClassicUO'nun sadece web client olarak kullanılabileceğinin açıklanmasının ardından tepkili.

    Resmi UO, Oyuncuları İkiye Böldü: Web Client Yeterli mi?

    2024-10-14 17:45

  • Ultima Online, ClassicUO ile resmi işbirliği yapıyor! Performans iyileştirmeleri, geniş oyun penceresi ve daha fazlası geliyor.

    Ultima Online, ClassicUO ile Resmi İşbirliğine Gidiyor

    2024-09-26 14:21

  • Centred#

    2024-07-08 22:50

  • CentrED+ 7.9

    2024-07-08 22:34

Menü
  • ANASAYFA
  • FORUM
  • DOKÜMAN
  • İNDİR
  • İLETİŞİM
  • Bağlantılar
  • CS 1.6 indir
  • CS 1.6 Türkçe
  • CS 1.6 Bot
  • CS 1.6 CFG
  • CS 1.6 Rate Ayarları
  • UO Server
  • Ghost Mouse indir
  • FPS Nedir?
  • Ultima Online PVP Server
  • Makroman
  • UO Karakter Yapılandırma
    © 2004 - 2026 Ultima-Strike. Her hakkı saklıdır.