Dizelerden tamsayılara kadar bir harita var. MySQL veritabanında bu haritayı saklamak için aşağıdaki tabloyu oluşturdu:MySQL veritabanının TEXT sütununu dizinlemek için doğru bir yol mu?
CREATE TABLE map(
Argument TEXT NOT NULL,
Image INTEGER NOT NULL
)
uzunluğu tahmin edilemez çünkü argüman için METİN tipini seçebilir, şu anda en uzun rekor 2290 karakter vardır ve ortalama uzunluğu 88 karakter olduğunu.
Performans sorunları ile karşılaştıktan sonra Argument
sütununa dizin eklemeyi denedim, ancak uzunluğu belirtmem gerektiğini öğrendim, bu nedenle bu sınırlamayı önlemek için karma değerler içeren (md5 veya başka bir) yeni bir tamsayı sütunu ekledim Bağımsız değişken sütun değerleri.
ALTER TABLE map ADD COLUMN ArgumentHash INTEGER;
Ve performansı ile ilgili problemlerin kayboldu O zamandan beri birleşik endeks
CREATE INDEX argument_index USING HASH ON map(ArgumentHash, Argument(80));
. Bu sorunu çözmek için doğru bir yol olup olmadığını sormak istiyorum.
I VARCHAR METİN farklı olarak, içi depolanır ve sık erişilen veriler için daha iyi bir performans sağlar, çünkü VARCHAR dizinler için kullanmak daha iyi bir sütun türü olabileceğini keşfetmiştir. http://stackoverflow.com/users/144287/brenton-alker –