tag有3个字符串。假设"科技","生活",”互联网“
字符串建索引效率不高
科技=》1
生活=》2
互联网=》3
对应文章表中 tag=1,2,3
这样写查询语句?
大家来帮我分析下,索引是否正确和查询效率,以及要考虑的问题。
设计的不足之处,希望高手指正。
字符串建索引效率不高
科技=》1
生活=》2
互联网=》3
对应文章表中 tag=1,2,3
这样写查询语句?
大家来帮我分析下,索引是否正确和查询效率,以及要考虑的问题。
设计的不足之处,希望高手指正。
1
jamiesun Aug 15, 2013
那你试试用set字段呗
|
2
barbery Aug 15, 2013
楼主想表达什么? 用tag id查文章? 是的话用IN就好, tag_id IN(1,2,3)
|
4
MarsWang Aug 15, 2013
explain 下看看有没用到索引
|
5
noahzh Aug 15, 2013
你这样是sql 中的反模式,叫乱穿马路.这样根本没有意义,使用一对多的关系..就可以解决.用关系表来连接
|
7
ipconfiger Aug 15, 2013
IN 查询 不走索引的,绕道吧。
@kenneth |
8
revlis7 Aug 15, 2013
我们用奇葩的二进制来做这种分类(好像set的内部实现就是这样的)
比如: "科技":0001(十进制1) "生活":0010(十进制2) "网络":0100(十进制4) 比如用户偏好是0011(十进制3),那么就代表只查看科技与生活类的信息,查询时用按位与操作进行过滤。 效率高不高不知道,这么做的好处是可以预留几位为今后扩展作考虑,否则用set做字段类型的话,扩展set字段时,需要更新表结构重建整张表。 |
9
ayang23 Aug 15, 2013
这个字段只有3个取值,索引唯一性不高,mysql不会使用索引的,除非你强制索引。
|
10
msg7086 Aug 15, 2013
反设计模式。
一般推荐用一个关系表来表达。people_tag_relationship表。 |