2010-08-24 23 views
11

Notları HTML veya uzun metin olarak depolamak için kişisel bir not veritabanı oluşturmak istiyordum. Kullanılacak daha verimli olan VARCHAR ve TEXT alanları arasındaki fark ne olurdu?MySQL: Uzun notları saklamak için en verimli veri türü?

Sanırım VARCHAR en fazla 65535 karakterdir, bundan daha büyük bir şey içerecek olursam kafamı sarabilirim. Belli bir veri tipinin otomatik olarak sıkıştırılabileceğini merak ediyorum, ancak bu kadar basit olduğunu düşünmüyorum (çünkü gerçek kullanımda çok fazla CPU zamanı alacaktır).

cevap

10

:-) 4GB max varchar kullanın. Ben kesinlikle mediumtext veya longtext tipini kullanmanız gerektiğini, ancak performansı ayrı bir tabloya yerleştirmek gerektiğini düşünüyorum. Örneğin, Notes ile ilişkili olacak ancak notu ve metin sütununuzu içerecek not no, başlık, oluşturma tarihi ve kullanıcı ve NotesText tablosunu içeren tablo Notes oluşturun. Bu, metin türü sütunları üzerinde querieng'den ve gerçekten ihtiyaç duyulmadığında veritabanından alınmasını önleyecektir.

+0

En alakalı cevabı buldum, sadece verimliliği uygulamak için başka bir masaya koymak istiyorum, çok teşekkürler. – John

+0

Kabul ettiğiniz için teşekkür ederiz;) Projenizde bol şans! –

+0

Bu YANLIŞ. Mysql'deki metin aynı 65535 karakterle sınırlıdır. – BarsMonster

2

bir adil METİN 65k karakterle sınırlıdır, MEDIUMTEXT 16 milyon olduğunu ve metin her zaman o kadar risk almayın daha kısa 65535 karakterden olacaksa emin değilseniz LONGTEXT

+1

Ve hiçbir şey, verileri saklamadan önce sıkıştırıp sıkıştırmayı (4 örnek, gzip ile) sınırlandırmaz. Bu durumda BLOB tiplerini kullanmanız gerekir. – BarsMonster

+0

Def. Bunu yapmayı düşünürdüm, ama metinleri görememek ve bunları sorgularda kullanmak için can sıkıcı olurdu ve neyse, kesinlikle bir 4MB + dosyasını sıkıştırmak isterdim, Teşekkürler! – John

2

VARCHAR maksimum uzunluğu 65535 bayt değil; satırın maksimum uzunluğu, bayt sayısıdır ve VARCHAR'ın maksimum uzunluğu, tabloda bulunan diğer sütunlara bağlı olacaktır. Bu nedenle, bu kadar çok karaktere ihtiyacınız varsa, bir METİN veya BLOB sütununa ihtiyacınız olacaktır. Bunlar disk üzerinde ayrı ayrı tutulur, dolayısıyla daha yavaş olma eğilimindedir (CPU kullanımında değil, toplam zamanda).

İlgili konular