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

时间:2017-05-30 12:05:29

标签: mysql indexing innodb

大家好我打算创建一个包含10列的表,它应该至少有10,000,000行,而在其中,我会有列description - VARCHAR(600)和索引。

所以问题是,在该列上查询LIKE是否更快 - VARCHAR(600),或者将描述拆分为6列中的100个字符并将其编入{{1 }和LIKE ..

例如:OR

description - VARCHAR(600) INDEX

或者将SELECT `id` FROM `table` WHERE `description` LIKE "%something%" 拆分为descriptiondesc1,... desc2desc6的速度会更快} - 每个人并使用以下查询:

VARCHAR(100) INDEX

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

致以最诚挚的问候,感谢大家!

2 个答案:

答案 0 :(得分:3)

完全没有区别。 。 。好吧,很少。查询将不得不进行全表扫描,因为like模式以通配符开头("%")。

如果您关心性能,则应该将问题重新解释为全文搜索。从documentation开始。

答案 1 :(得分:0)

如果您必须使用LIKE '%something%'(即LIKE带有前导通配符),那么

  • 单列。 (工作少于6 LIKEs,加上ORs)另外,你会对something恰好分布在两个块上做些什么?
  • 该列没有索引(因为前导通配符,索引不会被使用)