如何在MySQL中存储和索引典型的TEXT字段。在我的情况下,文本字段的最大长度为500个字符,我知道超过255个字符varchar将表现得像TEXT字段,但我也需要索引数据。我将在where子句中计算字段中某些类型的字符串外观。我将它存储为TEXT并在其上使用FULLTEXT,还是将其存储为VARCHAR(500)并将其编入索引?
答案 0 :(得分:2)
MySQL上的原生全文索引要求引擎为MyISAM。除此之外,我建议使用VARCHAR(500)而不是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
语句生成索引和放大器的插入内容。 INSERT
到main
之间的关联表,但效率不高。在规模上,您应该以固定的时间间隔或异步事件填充该表。