• 数据库建表经验总结——建表现象—sql查询疑惑


    在数据库建表方面你都有哪些感悟和理解?

    在最常用场景你有哪些查询疑惑?

    下面说说自己工作中的遇到的一些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建表现象,以及sql使用的疑惑。希望大家批评指正,在评论中写下您的见解,我将整理下,放到文章末尾,以期大家共同进步。

  • 相关阅读:
    妙味——自定义滚动条
    妙味——拖拽改变大小
    妙味——带框的拖拽
    IE6 固定定位
    JavaScript 事件绑定
    JavaScript 事件
    设置指定网页为主页
    [LeetCode][JavaScript]Compare Version Numbers
    [LeetCode][JavaScript]Implement Stack using Queues
    [LeetCode][JavaScript]Invert Binary Tree
  • 原文地址:https://www.cnblogs.com/Tpf386/p/11448355.html
Copyright © 2020-2023  润新知