优化搜索速度,以便在单个列中的特定位置查找特定子字符串

时间:2011-10-26 20:49:39

标签: mysql

我有一个表,其主键中包含一个总共包含16个字符的VARCHAR(16)列。我目前正在使用“LIKE CONCAT('_______________',?)”,“LIKE CONCAT('______________',?'_')”等搜索此列中特定位置的各种子串使用1个char示例,但它不一定总是一个char。 char随每个参数而变化?并且通过我所做的每个查询,并且通常有许多这些LIKE一起进行ORed。虽然自动生成该查询并不是什么大问题,但仍然不够快。我正在考虑将列拆分为16个VARCHAR(1)列并执行=?查询,因为它们对于简单的测试看起来要快得多,但这太荒谬了。

有没有办法让mysql索引每个字符的某个字符串列?因为这基本上就是我所需要的。或者是最好的方法将它分成1个字段?

1 个答案:

答案 0 :(得分:0)

  

有没有办法让mysql索引每个字符的某个字符串列?

某些数据库支持允许您执行此操作的功能索引。不幸的是,MySQL并不是其中之一。

  

或者是最好的方法将它全部分成1个char字段?

我会选择这个。如果您还希望能够对整个密钥执行查找,您可能还需要考虑非规范化和存储两个表示。