大神们,有没有 mysql 建立数据库的奇门技巧

2019-12-14 18:06:03 +08:00
 GroupF

让我一步一个脚印的成长,感觉自己建的数据库特别垃圾,就是感觉自己都很随便,又不知从哪里解决

2495 次点击
所在节点    数据库
13 条回复
GroupF
2019-12-14 18:06:32 +08:00
感觉周六你们不会刷 V2
newtype0092
2019-12-14 18:09:43 +08:00
都写在书里,就是没人看,《高性能 MySQL 》,看个前六七章就可以很靠谱了。
GroupF
2019-12-14 18:15:13 +08:00
@newtype0092 这本书看得我晕乎乎的,自己苦看,好多低级错误都要找好久,这么一说我自己还需要一个计划了,我的初衷只是想建表,看来这样是不行的
RedisMasterNode
2019-12-14 18:16:37 +08:00
姜承尧《 MySQL 技术内幕:InnoDB 存储引擎》
感觉比高性能 MySQL 看了有用,一来我是觉得翻译书的翻译流畅度是个问题,所以总是推荐原文书看原文,中文书就看国人自己写的也有很多好的资料;二来实际上很多 MySQL 的技巧都是基于常用的 InnoDB 引擎,所以应该更加深入去了解这个引擎而不是 MySQL
FaceBug
2019-12-14 18:28:56 +08:00
正常情况,不应该描述为 [建立数据表] 吗,要不是看你写了个 mysql 我以为你要自己造一个数据库
newtype0092
2019-12-14 18:29:17 +08:00
@GroupF 你要是完全的新手的话有个 HeadFirst 系列,特别简单易懂,配很多图示、类比之类的讲解,有 MySQL 也有别的,感觉没有编程基础的人也能看懂。
huijiewei
2019-12-14 18:38:06 +08:00
SQL 反模式吃透就好了
loading
2019-12-14 18:54:44 +08:00
不需要过度地提前优化
conn4575
2019-12-14 19:04:39 +08:00
sql 反模式可以参考,但是不要全信,里面很多东西都不符合目前的主流设计
luckyrayyy
2019-12-14 19:06:38 +08:00
你怎么感觉出来垃圾的....得先说明问题才能解决问题啊。
要是不知道从哪里下手,把事务、索引、锁、底层存储方式这几部分了解一下,大概哪里设计的有问题自己就清楚了。
wysnylc
2019-12-14 23:30:15 +08:00
1,不用外键
2,每个表加入 creat_time update_time,creat_time 和 update_time 默认值填 now(),update_time 勾选按时间戳更新
3,不使用 join,使用 in 多次查询
4,初期分表尽量使用时间分表,如果类似于 uid 分表就 20 张表,后期用一致性哈希分表
5,不使用事务,在分库环境下无法保证性能高的强一致性事务
6,不使用 for update 的行锁,使用 redis 锁这种在分布是环境下可使用的锁并且加在代码中
7,不使用存储过程和触发器
8,where 的条件顺序不影响索引的使用,执行器会优化顺序找到匹配的组合索引
9,暂时想到这一点,其他的再说吧祝你有个好成绩!
GroupF
2019-12-16 16:42:41 +08:00
@luckyrayyy 我建立数据库确实好暴力,好多都不规范,一时爽
GroupF
2019-12-16 17:52:58 +08:00
@wysnylc
第 3 条 ,我不是太理解,因为有个同事特别爱用 in 的子查询,上次一个 sql 都要 300 行,设计到十几个表,看的头皮发麻
第 6 条 ,我就会一点点 redis,甚至不能说会(安装卸载简单知识 hhh,正式工作 8 个月了)
第 9 条 ,暂时就这么多,看来还有好多需要学

对了对了,有时候感觉自己学 sql 都是在项目上学新东西的,(用的 mysql) 比如
1 字段根据 int 值写死的字段显示文字
select id,if(role_id =2,"代理商",if(role_id=6,"管理","ceshi")) from qy_admin
select if(table.id=2,"文字 1","文字 2") from table,其中文字 2 可以再写 if 条件 ,来判断多个写死的 1234 所代表的的值
2 case when then
3 行转列函数
4 find_in_set
等一些我之前没学过的函数,感觉他基础也陌生,然后看了自己建立的辣鸡库,就有了现在这个文,哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/629063

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX