赞
踩
case when:
问题1 case when 经常统计、纵表转横表的时候用过,ifnull, if 个人相对用的少 问题2 这个亲身体会,mysql 5.x版本默认大小写不敏感,mysql 8 默认大小写敏感,修改的话必须是数据库初始化之前修改,之后更改是无效的
问:将时间转换为时间戳,并使用 int 或者 bigint 类型去存储,你觉得这样可行吗 ?
答: 用int/bigint和datetime存储在不同项目都使用过,感受就是int/bigint计算上很方便。特别是当前端项目对于时间展示有不同的格式需求的时候,数据库中存储的是int/bigint(或者vo层转换)直接返回给前端,前端可以更方便的定制格式而不用先把datetime转成时间戳。但是如果没这方面的需求,那直接存储datetime就是最方便的,可以减少转换的次数。所以个人觉得,从存储角度上来说,如果没有格式定制的需求,直接存储datetime最省事。
问:大多数时候,我们会选择将主键设置为 bigint 数据类型,你知道这是为什么吗 ?
答:为什么考虑将主键设置为 binint 类型?这里的主要思想就是为了将来的扩展,因为 int 类型的最大表示范围大约是 20 亿,这对于 99% 的项目都基本足够用了。但是,如果考虑到将来业务发展的比较迅速,就需要使用 bigint 了。如果一开始没有使用 bigint,而是使用 int,那么,后期的迁移将会是很大的工作量
索引
- 三阶 2. 如若联合索引使用了两个字段,应该是类似将两个字段进行封装变为一个node整体,然后按照字段顺序进行排序,如(name, salary),索引会将{name, salary}视为一个整体,数据优先按照name进行排序,name相同时按照salary排序,一直到叶子节点。 3. 前缀索引可能会适合一些字段内容较长,但存在数据头部的一段短数据区分度可能较高的数据。 4. 建立在频繁作为查询条件,且数据区分度较高的列以及表间关联列。对于文章中提到的覆盖索引,如果存在某个列值频繁使用的话,可能为了避免查询回表,也可以考虑对其建立索引。建索引就是为了查询快。
视图
1.视图使用场景。目前使用经历,当数据分布在多个表中,且表之间通过id进行关联,无法直观的在可视化工具中看到数据之间的关系(直接看到的都是其他表的id),此时会考虑建立视图,方便查看。 2.视图的数据表区别和联系,目前知道的就是视图并不会存储数据,个人理解视图就像一个保存好的sql语句,可以随时执行;视图数据来自数据表;视图理论上不建议使用增删改,就如同它的名字,只用作查看即可。 3.- 4.删除视图后,母表不会受到影响,受影响的是依赖该视图的其他视图,此时其他视图会阻止删除该视图。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。