有两个字段要频繁的查询,如何建立索引?
问题描述:
目前在A表中,有name和flag两个字段,
查询的时候比较固定,是根据name和flag这两个字段来判断A表中是否已经存在某条记录了,
如果存在的话,则更新,不存在则增加一条记录。sql语句如:
[color=red] where name like '%秦皇岛%' and flag = '1'[/color]
表中的记录以后将会是非常多的,所以想建立索引来提高查询效率。
还有一点就是,name字段中的值是有很多重复的,比如说,A表中有100条数据,那么有可能是:
name flag
石家庄 1
石家庄 2
石家庄 3
石家庄 4
秦皇岛 5
秦皇岛 6
秦皇岛 7
秦皇岛 8
保定市 1
保定市 2
保定市 3
保定市 4
.... ...
就是说name字段中的值还是比较有规律的,但是flag则是不定的。
问题如下:
如果我创建了索引的话,是不是要为name和flag这两个字段建立复合索引?
或者说有什么更好的方式来建立索引?例如分别单独的为name和flag建立索引?
答
:o 你是秦皇岛人啊?
简单和你说一下索引的问题
索引 遵循左缀规则
像你的这个问题 就建立联合索引就行
name,flag
你用mysql 的explain 就可以看到 你的sql 需要的索引了
答
补充 :
我记得 like '%秦皇岛%' 是不能索引到的
like '秦皇岛%' 或者 like '%秦皇岛' 才行
8)
不用like 更好
答
联合索引name,flag 遵循左缀规则
name
name flag