SQL性能问题

MySQL 性能比较

sex 列上没有索引

  1. select * from user where sex=1;
  2. select username,passport,nickname from user where sex=1;

上面的两条SQL在单表数据量10万 和 100万的情况下各自的性能分别是什么样的?

阅读 3.9k
6 个回答

实际业务中严禁使用"select *",消耗内存、网络、磁盘IO是肯定的,还有更重要的一点是表发生变更以后,如果前端业务使用了变更后的字段必须全套代码整体更新,且只能停服更新!这是现在敏捷开发、不停服发版所不能容忍的!So。。即使你要取得所有字段数据,也要代码里面写上所有字段!
然后这里的性能比较肯定是select带出需求字段性能更佳,在所有场景下都是!

这个主要涉及传输过程中的字段越多,消耗的IO和网络就越多,在行数放大的情况下,这个性能差距会越来越大,当然,离开硬件谈性能都是浮夸

sex只有男,女,未知,这种加索引没意义。
理论上第二条性能会好一点,因为只select需要的字段,可以减少网络IO。

如果只有三个字段的话,我觉得是一样的。

执行下,比较下执行时间,一般都认为*性能会比较慢,但这只是理论,最好自己实践下

光是从搜索字段的数量来看,第二条效率应该会快一点吧,如果*代表的字段很多的话,肯定会消耗较多的网络IO

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题