mysql concat索引问题_MySQL 索引最佳实践之问题反馈

针对《MySQL索引最佳实践》中提出的问题,文章详细解答了关于使用bigint代替varchar存储CRC64数据、ORDER BY优化、关联表索引策略、IN与BETWEEN的效率比较、自增字段作为主键的适用场景等问题,提供了关于MySQL索引使用的实用建议和解决方案。
摘要由CSDN通过智能技术生成
6ae6b1813825e26a56dad21482431346.png

我之前发布的 PPT —— 《MySQL 索引最佳实践》中,有很多人提了很多问题,我没有时间一一回答,于是我决定把这些问题集中在一起进行回答。

问:我们团队中的一人想要使用 bigint 字段类型来代替 25-30 长度的 varchar 类型来存储 CRC64 数据,然后将索引也改成 bigint 的索引,这会节省索引的空间。请问这否是合理的性能优化方法?(需要注意到是自适应前缀哈希在这里是无效的,因为前 10 个字符重复率很高,因此 UNIQUE 索引不适合用在这里)

答:在很多时候,这是一个很好的优化方法。考虑到哈希碰撞的问题,你可以使用形如 SELECT * FROM TBL WHERE hash=crc32(‘string’) AND string=’string’这样的查询。另外还需要注意的是 MySQL 里的字符串比较默认是不区分大小写的,对于哈希字符串也是如此。另外与 25~30 字节长度的字符串来说,使用 8 位的 bigint 在索引存储上的差异并不大。你所采用的这项技术对超过 100 直接的字符串是最好的

问:ORDER BY 的优化问题:select * from table where A=xxx and B between 100 and 200 order by B 是很常见的日期范围的查询,并且需要对结果进行排序。问题是这样的查询如何设置最佳的索引?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值