mysql 索引问题

luxury515 发布于 2018/05/03 09:42
阅读 188
收藏 0

elect abc from table where a = 20180101, b=-1 有这样的查询语句

目前只有a字段设为索引,b字段还没有。b字段只有 -1 或1 值。

那问题一下,b字段还需要加为索引吗?

where 条件有a,b,c,d,e 那是不是把这5个字段都得加为索引呢?

加载中
0
foy
foy

1. 单独一个b字段,识别度太低了,单独b字段不适合作为索引

2. a,b,c,d,e 5个字段,需要整体看下,其他相关的sql情况。简单粗暴的全部加索引明显不对

0
意简美
意简美

基本思想给粒度最细的加上索引

0
魔力猫
魔力猫

B的值太少了,只有两个,基本上没有多少意义。这种可选择性很差的字段,也就OLAP里面位图索引有时候会考虑。

至于说一个表或者一个数据库要加哪些索引,要根据一段时间的SQL统计分析,数据库运行分析来判断。要综合成本效率。外键要加索引是刚需之外,剩下的,看可选择性,看使用频率,看过滤范围。

0
筱虾米
筱虾米

首先,数据量少的字段不需要加索引,另外如果where条件中是or关系,加索引不起作用。

针对你给出的sql,如果我们在a,b上分别创建单个索引的话,但是mysql查询每次只能使用一个索引。虽然性能有所提高,但是如果建立复合索引,效果会更好。如果我们创建了(a,b,c)的复合索引,那么就相当于创建了a,ab,abc三个索引。因此在创建复合索引的时候,应该将最常用作为限制条件的列放在最左边,依次递减

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部