【发布时间】:2015-10-21 23:18:16
【问题描述】:
我有一个表,其中包含 SET 类型的列,例如 SET('abc','def','ghi') 存储像 "abc,ghi" 这样的数据,我索引这些列。所以当我想找到"def" 或"ghi" 我必须使用LIKE "%def%" 但我读到"%" 如果你使用它作为第一个字符mysql 不使用索引进行搜索。我该怎么办?我应该将类型更改为枚举并将每个值存储在具有如下 ID 的单独行中:
+---------+
| column |
+---------+
| abc |
| abc,ghi |
| abc,def |
| ghi,def |
+---------+
改为:
+----+--------+
| ID | column |
+----+--------+
| 1 | abc |
| 2 | abc |
| 2 | ghi |
| 3 | abc |
| 3 | def |
| 4 | ghi |
| 4 | def |
+-------------+
或者有什么东西可以操纵索引来分别存储每个单词?
【问题讨论】:
-
So when I want to find "def" or "ghi" I have to use LIKE "%def%"不要那样做。使用子表来表示集合的元素。 ` 我读到“%”,如果你使用它作为第一个字符 mysql 不使用索引进行搜索`这就是原因。 -
我不明白你能解释一下吗? @Eric J.
标签: mysql indexing where-clause