野生猿
==========割=============
最近公司内部转岗到java,做了一个数据统计的需求,MySql数据库9千多条数据我封装成JavaBean,一个个if到各部门,然后再for统计性别,人员,学历学位数量...被自己蠢哭了
网上的mysql习题太散乱了,跪求那种一步步进阶的mysql习题书籍或者网站,我数据库一般般,连having执行是在where之前也是做这个需求翻博客才知道...路过的大神求指点
==================================
顺带一问,这个需求是统计部门下的部门人数,性别,学历学位
具体是形成这样子的一个格式在web显示
部门,下级部门数,人数,男性数,女性数....
有两个表,一个是部门表,一个是员工信息表
我用join把两个表连起来作为临时表再通过group by 和 count 去统计数量,因为每个员工的部门有直管部门,中间部门使用了DISTINCT去重统计
各位大神有没有什么其他思路,mysql语句好长,不知道会不会影响性能...
可以看 MySQL Cookbook(中文版)
网上有pdf
https://book.douban.com/subject/3045359/ 这是它的介绍,里面有目录
这书的特点就是按照一个一个题目,列出解法。并且都是很实用的而不是学院派的问题。
你看了题目先不看他的解答,自己解决,再对照,就能起到练习的效果。直接看回答,又起到学习的效果。
内连接语句写好了,就不会影响性能,如果你全部查出来,在去java里面处理才真会造成性能问题。因为程序本身连接数据库就是性能问题,尽可能减少与数据库的连接次数。
如果数据比较多,可以为员工信息表的所属部门字段建立索引。提高性能,当然如果索引过多,势必你的插入操作和删除操作性能受到影响,至于性能,你可以在测试环境测试,
建立索引与不见索引,两者的时间比,以及插入和删除操作的时间比
1、w3cschool上学习Mysql,里面有参考文档也有视频,把相关练习做完也算是入门了,https://www.w3cschool.cn/mysql/
书籍参考:https://zhuanlan.zhihu.com/p/31786056
2、9000多条数据其实不会有什么性能影响,只有量级到百万或者千万以上才可能出现查询性能问题,必要的索引建议加上;
https://www.jianshu.com/p/e8dcead47a20
可以参考这里
https://www.cnblogs.com/xingyucn/p/10428827.html这个网站有MySQL练习50题,可以看看。
楼主想问的应该是数据库优化的问题
这个数据量是不会影响性能的,但我们作为程序猿,是要考虑到随着数据增加产生的问题,第一个就是加合适的索引。
1、首先就是不要让索引失效
很简单,就是你写好的sql语句 前面加explain 执行,如果违反了索引的规则就会导致索引失效(具体可以参照https://blog.csdn.net/qq_34258346/article/details/80272198)。
2、数据库建表规则,表既然已经存在,如果不是特别不合理,这个可以暂时不考虑。
说下数据库建表一些不合适的地方,比如字段过多(可以考虑纵向拆分),巨长字符串的存储(单独存储)等等(具体参照:https://blog.csdn.net/weixin_37934748/article/details/84108887)
3、随着数据量增加,到达千万级别的时候,考虑主从复制读写分离、分库分表等,如使用中间件mycat
(具体参照https://www.cnblogs.com/butterfly100/p/9034281.html)
4、最后看文字比较枯燥,给出系统的学习视频,祝学习愉快。
链接:https://pan.baidu.com/s/12Eh_Xp6P3XZaTXvjynqBDA 提取码:96ad