09 / 08 / 2009

hangisi daha büyük ? int(7) mi ? int(8) mi ?

ekleyen: Emre Çevik kategori: ipuçları| mysql

Geçenlerde bir arkadaşımın veritabanını incelerken her tablo alanına bu değerleri verdiğini gördüm. neden bu kadar uğraştığını sorduğumda ise performans için cevabını aldım..

int(7) ile int(8) arasındaki fark nedir ?

tinyint(1) ile tinyint(2) arasında hiç bir fark yoktur. int(5) ile int(6) arasındada hiç bir fark yoktur yani sanmayınki tinyint(1) 15 değerini almaz. bal gibide alır.

peki biz neden bunları kullanıyoruz hiç bir nedeni yok bunlar sadece bilgi verme amaçlıdır.

unutmadan söylemek lazım eğer alana ZEROFILL ozelliği eklemişseniz o zaman işinize yarayabilir. alan tipinizin int(5) ve ZEROFILL olduğunu düşüneliM 4 versinin eklediğinizde 00004 olarak gözükecektr.

aşağıdada mysql konuyu ozetlemiş.

The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column. For example, a column specified as SMALLINT(3) has the usual SMALLINT range of -32768 to 32767, and values outside the range allowed by three characters are displayed using more than three characters.

peki tinyint kullanmak ile int kullanmak arasında performans farkı varmıdır sorusuna gelirsek ?

cevap : elbete vardır. tinyint -128 – 127 arasında değer alır ve 1byte tır. int ise 4 byte. aşağıdaki tablodan değer araklıları ve byte bilgisine ulaşabilirsiniz.

TINYINT | 1 byte | -128 127
SMALLINT | 2 byte | -32768 32767
MEDIUMINT | 3 byte | -8388608 8388607
INT | 4 byte | -2147483648 2147483647
BIGINT | 8 byte | -9223372036854775808 9223372036854775807

  • Digg
  • del.icio.us
  • Facebook
  • Google
  • BlinkList
  • blogmarks
  • description
  • Furl
  • Ma.gnolia
  • NewsVine
  • Reddit
  • Technorati

benzer konu bulunamadı


(2 votes, average: 5.00 out of 5)
Loading ... Loading ...

7 yorum

1 | omer

09 / 08 / 2009 - 16:05

Avatar

bu tur sabit alanlar icin aslinda enum diye bi alan daha var ama pek kullanıldıgnı gormuyorum , su zamana kadar kullandıysamda artık char kullanıyorum …

2 | Emre Çevik

10 / 08 / 2009 - 09:07

Avatar

alanlar sabit degil mesela id alanıda bunlar icinde geçerli. sadece konu int(7) ile int(8) arasında bir fark olmayışı. ama çoğu kişi zerofill kullanmasada ikisinin farklı olduğunu düşünür.

3 | emir buğra

10 / 08 / 2009 - 15:11

Avatar

ben hiç uğraşmıyorum 6- 7 falan diye. int yapıyorum geçiyorum. bir zararı olmaz umarım…

4 | Emre Çevik

10 / 08 / 2009 - 15:41

Avatar

6 veya 7 yapmak arasında fark yok fakat tinyint ve int yapmak arasında fark var.

şöyle açıklayayım.

şimdi bir siteniz var ve bu siteye uyeler kayıt olacak ve uyeler icin kayit_id alanınız var. ve sitenize max 10.000.000 üye olacağını düşünüyorsanız int kullanmanız sizin her üye için 1 byte kaybetmeniz demektir. bu koşulda mediumint kullanmanız mantıklı olacaktır.

veya yine bir alan düşünün siteye giren üyelerin aktif veya pasif olması için bir alan açtınız aktif üyeler 1 pasif üyeler 0 diye nitelendirecekseniz. bu alan tipi için int kullanmanız üye başına size 3 byte kaybettirecektir. tinyint kullanmanız gerekmektedir.

performans açısından daha iyi olmasını istiyorsanız bu şekilde kullanmalısınız. eğerki sitenizde veritabanında fazla kayıt yoksa ve kullanıcı sayınız az ise herhangi bir problem olacağını düşünmüyorum.

5 | Erhan

20 / 08 / 2009 - 17:55

Avatar

bu ınteger aralıklarını kolayca hatırlamak için bir tablo yapmıştım. işinize yarayabilir => http://ff.im/6TrqX

6 | Emre Çevik

24 / 08 / 2009 - 09:33

Avatar

bende ezbere bilmiyorum

3 ten büyük olursa smallint
6 dan büyük olursa mediumint
9 dan büyük olursa int kullanıyorum.

7 | yedincisenol

07 / 03 / 2010 - 00:41

Avatar

Bunu öğrendiğim iyi oldu. Teşekkürler.

yorum yaz

ne yapıyoruz

eğleniyoruz?

anket

design pattern yazılarını nasıl buldunuz?

sonuçlar

Loading ... Loading ...