有两个字段要频繁的查询,如何建立索引?

目前在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建立索引?

3个回答

:o 你是秦皇岛人啊?

简单和你说一下索引的问题
索引 遵循左缀规则
像你的这个问题 就建立联合索引就行

name,flag

你用mysql 的explain 就可以看到 你的sql 需要的索引了

补充 :
我记得 like '%秦皇岛%' 是不能索引到的

like '秦皇岛%' 或者 like '%秦皇岛' 才行
8)
不用like 更好

联合索引name,flag 遵循左缀规则
name
name flag

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问