请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

问个数据库sql执行性能问题!!请懂sql的大神帮忙解答一下

看到视频中老师很多地方使用selectByPrimaryKey 来获取一个pojo对象,然后只是用其中一个属性的值。这样在实际的大型项目中会影响性能吧?

换句话来说,就是 

select a from 表名 where 条件 

select a,b,c,d,e,f,g... from 表名  where 条件

当表中的数据量达到几万,几十万甚至更多时,这两句sql查询时间会有很大差别吧?因为在实际项目,我就遇到过这个情况。

不知是否是因为老师为了方便的原因,不想重新再写sql,所以就直接不停复用mybatis插件生成的这个selectByPrimaryKey sql方法.

希望老师百忙之中能抽空解答一下,这个问题关系实际工作当中,数据库性能调优的场景,谢谢

正在回答

2回答

你好,亲爱的同学,一期有为了方便的一些心思,如果到百万千万,那可能就要考虑分库分表了。这两个查询时间差异还是挺大的在数据量大的情况下。所以在项目的一些地方,也有精准select字段,也就是说用什么字段,查询什么字段。不过在百万级别以内应该是没有问题的。

性能调优首先是索引要保证能踩上,另外可以用mysql的计划任务,查一下sql语句消耗在哪里,再有的放矢

0 回复 有任何疑惑可以回复我~
星辰Iron 2018-05-22 22:50:49

selectByPrimaryKey这个方法意思是通过主键(一般是ID)来查询信息,查询返回的信息是通过某一个类型的数据类型来接收数据并通过ServerResponse.createBySuccess()返回到前端,关键在于XxxMapper.xml里面的SQL语句是查询了多少字段,如果Base_Column_List里面定义了很多字段,那么返回前端的信息就会有冗余。

0 回复 有任何疑惑可以回复我~
  • 是的,那你觉得这些冗余信息是否会影响性能?还是说影响特别小,小到可以忽略不计
    回复 有任何疑惑可以回复我~ 2018-05-23 19:00:56
  • 这个就要看前端页面的要求了,如果返回的字段太多的话前端解析起来效率肯定会降低。后端SQL语句查询的话当然也是要查询的字段越多效率越低,本身使用Base_Column_List这个也就是为了固定要查询的字段个数。
    回复 有任何疑惑可以回复我~ 2018-05-24 00:10:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信