专栏首页算法之名MYSQL的索引优化 顶

MYSQL的索引优化 顶

当一个表的数据量较大时,我们需要对这个表做优化,除了分表分库以外,最常见的就是索引优化了,那做索引优化的原则是什么呢?

在不考虑排序,分组时,也就是SQL语句中只有where的时候,多列并查如

select * from payment where staff_id=? and customer_id=?

的索引原则,谁的数量多,把谁作为最左索引,最左索引在MySQL的B+树结构里的位置是很重要的。

select count(distinct staff_id)/count(*) staff_id_selectivity,count(disctinct customer_id)/count(*) customer_id_selectivity,count(*) from payment\G

加入运行结果为 staff_id_selectivity:0.0001

customer_id_selectivity:0.0373

count(*):16049

很明显customer_id的占比大,结果为

alter table payment add key(customer_id,staff_id)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mybatis操作mysql 8的Json字段类型

    Json字段是从mysql 5.7起加进来的全新的字段类型,现在我们看看在什么情况下使用该字段类型,以及用mybatis如何操作该字段类型

    算法之名
  • 建立缓存,防高并发代码demo

    我在之前的博客中提到过——缓存并发,当一个key过期时,访问这个key的请求量过大,穿透到数据库.解决办法:1,分布式锁,保证每个key同时只有一个线程去查询数...

    算法之名
  • 线程池整理

    一般在生产环境中,我们都不会直接new一个Thread,然后再去start(),因为这么做会不断频繁的创建线程,销毁线程,过大的线程会耗尽CPU和内存资源,大量...

    算法之名
  • 分布式系统中生成全局ID的总结与思考

    世间万物,都有自己唯一的标识,比如人,每个人都有自己的指纹(白夜追凶给我科普的,同卵双胞胎DNA一样,但指纹不一样)。又如中国人,每个中国人有自己的身份证。对于...

    用户1263954
  • DiscuzX2.5数据库字典

    pre_common_admincp_cmenu – 后台菜单收藏表 title => ‘菜单名称’ url => ‘菜单地址’ sort => ’0′ COM...

    joshua317
  • ASP.MVC当URL跳转时候参数的安全性

          一个页面跳转到另外一个页面直接将参数写在URL上面并不安全比如 http://XXXXXXXXXXX/meeting/shakeGroup?id=5...

    用户1055830
  • 通过错误的sql来测试推理sql的解析过程(二) (r8笔记第7天)

    之前总结过一篇 通过错误的sql来测试推理sql的解析过程 也算是以毒攻毒,当然也分析出来一些有意思的内容来,让原本看起来枯燥的内容有了更多的实践意义。 ...

    jeanron100
  • 记一次mysql优化

    今天在技术经理的现场优化中,把一条需要40000ms的sql语句优化到9ms左右,将近提高4500多倍的速度

    botkenni
  • myBatis实例

    用户1112962
  • 第26天:js-$id函数、焦点事件

    一、函数return语句 定义函数的返回值,在函数内部用return来设置返回值,一个函数只能有一个返回值。同时,终止代码的执行。 所有自定义函数默认没有返回值...

    半指温柔乐

扫码关注云+社区

领取腾讯云代金券