sql建表经验总结——主要是建表现象
在建表方面你都有哪些感悟?
见过的建表的一些现象:
1,一对多业务,有时候在主表见一个字段xxIds,然后存多表的id,多个英文逗号隔开,不知道这样好不好?
2,大部分字段建成varchar(50),反正现在空间不珍贵了(相对而言),不管name,还是描述,不算事分类名还是别名……
3,时间类型建成varchar(20),这样见的好处大概是转json时不会被转成事件戳了,啥数据都能被存储进去?
4,钱数据被建成varchar(20),数据不会丢失了?反正也不在数据库计算,不知道为啥这样见?
5,tinyint见到的很少,都是直接用int?其实取值范围很小,只有那么几个。
6,索引要不建一大堆,要不完全不见?
7,很多时候都很纠结,一对多的列表查询时,该如何查,关联多表数据吧,数据会重复,不关联吧,列表又要展示,你们都是咋查询的?
8,时间范围查询,不转类型也能查询,数据库都帮你转好了?耗费性能,性能很难被察觉阿……
9,存储过程一写几百行,用的时候真好用,改的时候不好改,到底该怎么权衡,总是很难办,随波逐流吧……
11,视图到底还能不能用到索引,是不被关注的,这个问题一直没搞清楚啊,网上说是不会用到……
12,一对多还好,很常见,多对多数据量真恐怖啊,有时候反复分析,好不容易转为一对多,但是有时候针对是灾难阿……
13,convert xml配合outer apply写的sql好难看啊,不知道性能如何呢,反正数据是查到了……
14,stuff写起来还是不顺手啊,可是客户希望拼起来,也没有办法啊,拼多了感觉stuff函数好强大啊……
15,over函数不要太强大啊,除了分页使用,还有好多用法,都不怎么用,但是进行分组排序真的好用,有时候。
16,group by 后having过滤往往被忽略,可是配合having再配合聚合函数用,有时候很方便。
17,with t as上下文表达式,大部分数据库都支持,有时候大大简化了sql的清晰度。
可能有时候见的不规范建表的现象多了,往往变麻木,然后很多字段的长度都建的长一点,varchar(50)、varchar(100)到处都是,很难评价啊……
只是罗列了自己看到的一些现象,希望大家批评指正,在评论中可以写下您的见解,我整理下,大家共同进步。
sql建表经验总结——主要是建表现象的更多相关文章
- 定制Asp.NET 5 MVC内建身份验证机制 - 基于自建SQL Server用户/角色数据表的表单身份验证
背景 在需要进行表单认证的Asp.NET 5 MVC项目被创建后,往往需要根据项目的实际需求做一系列的工作对MVC 5内建的身份验证机制(Asp.NET Identity)进行扩展和定制: Asp.N ...
- 建表过程-列名&列类型&修改表B
怎么建表? 主键 名称 重量 价格 生产日期 保质期 产地 种类 分析:我们只要把第一行的表头建好后,这张表也就完成了. 术语:建表的过程就是声明字段过程 ...
- oracle 建表空间->创建用户并把表空间分配给用户->给用户授权->导库
首先注意:我参考网上使用的sysdba模式(normal)登陆的,其他的模式建不了用户(个人没有进行其他模式的表空间尝试,如有人尝试欢迎补充,感激不尽) 表空间相当于表的容器(一下所有的操作都适用于o ...
- 【HIVE】(1)建表、导入数据、外部表、导出数据
导入数据 1). 本地 load data local inpath "/root/example/hive/data/dept.txt" into table dept; 2). ...
- 获取表空间的语句 以及 建表和索引的ddl
alter session set container=PHD1; SET SERVEROUTPUT ON SET LINESIZE SET FEEDBACK OFF SET PAGESIZE sel ...
- mysql--创建表,插入数据,修改表名,删除表,简单查询/内连接、左/右连接
创建表mm: 其中id为主键且自增长 ) primary key not null unique auto_increment, name ) not null, age ), class ) no ...
- PL/SQL Developer图形化窗口创建数据库(表空间和用户)以及相关查询sql
前言:上一篇安装好oracle和pl/sql后,这篇主要讲如何创建数据库,因为接下来我的项目会连接数据库进行开发. 第一步.先用系统管理员登录pl/sql 我这里系统管理员用户名为system,密码为 ...
- SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
不是很理解为什么在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你.而且我遇到的情况是居然有的时候阻止你,有的时候不阻止你,摸不到头脑. ...
- 浅谈SQL语句优化经验
(1) 选择最有效率的表名顺序(只在基于规则的seo/' target='_blank'>优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后 ...
随机推荐
- Supalle-Admin-Layout,一个PC端和手机端都合适用的后台页面模板
Supalle-Admin-Layout主要使用有Vue.Element-UI.layui-icon,Ajax实现采用Fetch(是有这个打算,不过目前是jQuery.). 源码地址:https:// ...
- TCP三次握手抓包理解
TCP建立连接需要三次握手,分手需要四次握手,平时在网上看到很多次,但是还没有很理解.为什么分手要多一次?可能是刚开始追求女生的时候比较容易,到分手的时候就比较麻烦了吧... 了解某个东西要从它的基础 ...
- case和decode的用法(行转列)
创建了一张成绩表,如下图所示: 在oracle中,这两个函数我们都可以使用,代码及结果如下: decode用法: select Name,decode(Subject,'语文',1,'数学',2,'英 ...
- 「玩转Python」打造十万博文爬虫篇
前言 这里以爬取博客园文章为例,仅供学习参考,某些AD满天飞的网站太浪费爬虫的感情了. 爬取 使用 BeautifulSoup 获取博文 通过 html2text 将 Html 转 Markdown ...
- TCP传输协议如何进行拥塞控制?
拥塞控制 拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象.这种现象跟公路网中 ...
- 雪花算法【分布式ID问题】【刘新宇】
分布式ID 1 方案选择 UUID UUID是通用唯一识别码(Universally Unique Identifier)的缩写,开放软件基金会(OSF)规范定义了包括网卡MAC地址.时间戳.名字空间 ...
- web渗透---第二天
协议常识 HTTP协议 百度百科的解释:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议. 所有的WWW文件都必须遵守这个标准. ...
- JSON在线格式化 jsoneditor使用
const placeholder = { string: 'hello world!', boolean: true, color: '#6c928c', number: 123, null: nu ...
- SpringMVC的流程
Springmvc的流程 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求后,调用HandlerMapping处理映射器,请求获取Hand ...
- SpringBoot:如何优雅地处理全局异常?
之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Contro ...