经常设计一些只有 2 3 个字段的小表,然后弄一堆外键和多对多的表,导致即便数据量不大也查询比较慢。还有用一些反模式,比如一个短信发送表,把一次给一堆人发送的结果存成一条记录,然后有个发给谁的字段存了好几个人手机号,再用逗号分隔,导致查发给了谁只能模糊查询,也是慢。甚至有一些报表需要使用正则查数据库,要么就从数据库都拿出然后在 Django 里做正则匹配。然而发现这些问题都是得过段时间重新审视表设计,或是遇到一些需求才能发现。怎么才能在最初设计的时候就能规避一些问题呢?
1
rim99 Jun 6, 2020
敏捷嘛,不同的重构就是
|
2
rim99 Jun 6, 2020
不停,打错了
|
4
MOONLIGHTT Jun 6, 2020
数据库设计有范式的,一般能够达到 3NF 性能就可以了(课本上是这么说的)。。
对于一对多的记录的话,postgresql 好像可以存 json 的数据,也能查询 jso 。 |
5
chenxytw Jun 6, 2020
在最初设计时没法规避没有遇到过的问题...
所以需要刷经验... 实在自己涨经验慢的话,多看看别人的博客 /文章吧 0 0 |
7
zhoudaiyu OP PRO @MOONLIGHTT 我们用的 mysql 5.6 好像对 json 支持一般
|
8
Govn Jun 6, 2020
mark 一下 我现在也有这个问题 我现在的解决方法就是写 sql 。
|
9
HashV2 Jun 7, 2020
@MOONLIGHTT 也没必要完全遵守第三范式吧,有时候一些冗余换查询效率也是很有必要的
|
10
37Y37 Jun 7, 2020
多写就好了,每次发现之前设计的不合理就改掉记录下来,下次设计就会更合理一点,长此以往就设计合理了
|