MySQL - InnoDB 索引 varchar 或索引多个 varchar

MySQL - InnoDB indexing varchar or indexing multiple varchars

大家好,我打算创建包含 10 列的 table,这应该至少有 10,000,000 行,并且在其中,我将有列 description - VARCHAR(600) 和索引。

所以问题是,在该列 - VARCHAR(600) 上查询 LIKE 会更快,还是将描述拆分为 100 个字符的 6 列并使用 LIKEOR..

例如:description - VARCHAR(600) INDEX

SELECT `id` FROM `table` WHERE `description` LIKE "%something%"

或者将 description 分成 6 列会更快,例如 desc1desc2、..desc6使用 VARCHAR(100) INDEX - 他们每个人并使用以下查询:

SELECT `id` FROM `table` WHERE `desc1` LIKE "%something%" OR `desc1` LIKE "%something%" OR `desc3` LIKE "%something%" OR `desc4` LIKE "%something%" OR `desc5` LIKE "%something%" OR `desc6` LIKE "%something%"

只是想知道在我开始创建数据库之前..

向大家致以最诚挚的问候!

完全没有区别。 . .嗯,很少。查询将必须进行完整的 table 扫描,因为 like 模式以通配符 ("%") 开头。

如果您关心性能,您或许应该将问题改写为全文搜索。从 documentation.

开始

如果必须使用 LIKE '%something%'(即带前导通配符的 LIKE),则

  • 单列。 (工作少于 6 LIKEs,加上 ORs)另外,如果 something 恰好分布在两个块中,您会怎么做?
  • 该列没有索引(由于前导通配符,索引不会被使用)