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. 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
    • Ultima Online Oyuncu Rehberi

      Ultima Online Oyuncu Rehberi

      Oyunu hakkında tanıcı bilgiler ve ipuçları

    • Ultima Online Server List

      Ultima Online Server List

      Önemli özellikleri ve online oyuncu sayıları

    • Ultima Online Script

      Ultima Online Script

      Sphere, RunUO, Razor scriptleri

    • Ultima Online Forum

      Ultima Online Forum

      UO hakkında görüş alışverişi

  • FORUM
  • DOKÜMAN
  • İNDİR
  • DISCORD 21
   Üye ol    Giriş
166
  1. Doküman
  2. Ultima Online
  3. SphereWiki
  4. MySQL
  5. 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
  • 5020 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
    Alcor UO Reborn

    Sunucular 3 gün önce

  • System_Error
    Client Patlaması

    Ultima Online 5 gün önce

  • georgm15
    CS2 turnuvaları tartışmalı başladı.

    Counter-Strike 2 1 hafta önce

  • georgm15
    Counter-Strike 1.6 İndir - Tek Link Hızlı-

    Counter-Strike 1 hafta önce

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

    Ultima Online 1 hafta önce

  • Cihangir algın
    Razor Kullanımı

    RunUo Scripting 3 hafta önce

  • Lucretius
    Rampage Pvp

    Sunucular 3 hafta önce

  • Lucretius
    Nephilim Pvp

    Sunucular 3 hafta önce

  • redi4817
    NightUO

    Sunucular 3 hafta önce

  • Cengiz MERDİT
    Sphere 56T Nightly Sürümü

    Ultima Online 1 ay önce

  • aygun
    Esgaroth UO

    Sunucular 1 ay önce

  • deonist
    Alysa Pvp ( Aktif ! )

    Sunucular 1 ay önce

  • mthN
    Nebula Uo gerçekleri

    Ultima Online 2 ay önce

  • buffa
    Kullanılması Gereken Rate Ayarları

    Counter-Strike 2 ay önce

  • Lucretius
    Aktif Satılık Server !

    Sunucular 2 ay önce

  • 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

  • Distance(uzaklık) Sorgusu Hakkında

    2024-06-19 22:05

  • UoFiddler

    2024-06-01 02:19

  • UoFiddler ile Map Kopyalama

    2024-05-31 21:17

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 - 2025 Ultima-Strike. Her hakkı saklıdır.