如何在MySQL中存储和索引典型的TEXT字段?

时间:2010-10-08 05:09:42

标签: mysql

如何在MySQL中存储和索引典型的TEXT字段。在我的情况下,文本字段的最大长度为500个字符,我知道超过255个字符varchar将表现得像TEXT字段,但我也需要索引数据。我将在where子句中计算字段中某些类型的字符串外观。我将它存储为TEXT并在其上使用FULLTEXT,还是将其存储为VARCHAR(500)并将其编入索引?

2 个答案:

答案 0 :(得分:2)

MySQL上的原生全文索引要求引擎为MyISAM。除此之外,我建议使用VARCHAR(500)而不是TEXT,因为:

  • TEXT将允许超过500个字符
  • 搜索VARCHAR通常比TEXT,索引或其他
  • 更快

答案 1 :(得分:0)

有关为大字段生成固定长度哈希值,请参阅this awesome question

另外,考虑使用“某些字符串出现类型[s]构建索引表”,例如:

CREATE TABLE main(
  id INTEGER NOT NULL,
  long_text_field TEXT NOT NULL
)

CREATE TABLE main_string(
  main_id INTEGER NOT NULL,
  main_string_types_ud INTEGER NOT NULL
)

CREATE TABLE main_string_types(
  id INTEGER NOT NULL,
  certain_string VARCHAR(255) NOT NULL
)

您甚至可以使用TRIGGER语句生成索引和放大器的插入内容。 INSERTmain之间的关联表,但效率不高。在规模上,您应该以固定的时间间隔或异步事件填充该表。