Mysql 只查状态字段优化

查看 84|回复 4
作者:marine2c   
如题,表有 300 万数据的样子,状态字段是 varchar 的,只有 5 个状态,只查某个状态的全部数据时很慢,状态字段加索引也没用,怎么解决

状态, MySQL, varchar, 索引

brader   
sql 语句试下强制指定索引
hhjswf   
只有 5 个状态,你加个 der 的索引。。浪费空间,增加插入开销。索引要用在有区分度的字段。
同步到 es 库查询?
xwayway   
“只有 5 个状态,只查某个状态的全部数据时很慢”
你的意思是每个状态平均 60 万行数,然后你要一次取出这么多的数据?
慢是当然的,mysql 的优化器要么走全表扫,要么走索引然后来 60 万次(准)随机 IO ,都会慢
你真有这种业务需求,要么上 redis ,要么按这个状态字段建分区表,前者当然更好,后者如果你用的 ssd 性能也够用,硬盘的话,看你这 60 万行数到底占多大空间了
xwayway   
5 个字段,区分度并不高啊。散列散列,所以还是没懂散的意思啊。
我猜你是不是 select * from xxx where status = 'xxx' 查询的,要不先改成 select * from xxx where id in(select id from xxx where status = 'xxxx')?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部