编程概念(一):数据库相关

1、sql关键字写的顺序以及执行顺序

建议的书写顺序为:

SELECT [ DISTINCT ]
FROM
WHERE
GROUP BY
HAVING
UNION
ORDER BY

执行顺序:

FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>
WHERE <where_condition>
GROUP BY <grout_by_list>
HAVING <having_condition>
SELECT
DISTINCT <select_list>
ORDER BY <order_by_list>
LIMIT <limit_number>

2、数据库三范式

  • 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解(只要是关系型数据库都满足1NF)
  • 2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性
  • 3NF是对字段冗余性的约束,它要求字段没有冗余。 没有冗余的数据库设计可以做到

3、索引

  • 索引类型
    根据用途可分为:普通索引、唯一索引(可为空)、主键索引(特殊的唯一索引,不能为空)、组合索引(最左前缀)、覆盖索引、全文索引(类似搜索引擎)。根据结构可分为:BTREE、HASH(缺点有不适合于组合索引和覆盖索引情况、不能排序、不能范围查询<>和<=>不一样)、RTREE(适用于范围查询,空间索引)、FULL TEXT
  • 索引好处
    减少扫描数据量、避免排序和临时表、随机IO变为顺序IO
  • 索引缺点
    会增大开销,对UPDATE、INSERT等语句会有性能影响
  • 不使用索引场景
    有or、组合索引不符合规则、like查询是以%开头、优化引擎认为不用索引更快
  • 索引原理
    待完善

4、数据库事务

  • ACID原则(原子性、一致性、隔离性、持久性)
  • 隔离级别:未提交读、提交读(不可重复读)、可重复读(默认会导致幻读,可通过MVCC处理)、可串行(级别最高,开销最大)

5、mysql存储引擎

  • InnoDB
    默认事务型引擎,采用MVCC(多版本并发控制)支持高并发,实现了四个事务级别,默认可重复读(通过间隙锁处理了幻读)
  • MyISAM
    5.1之前的默认引擎,支持很多特性包括全文索引(5.6后InnoDB支持)、压缩、空间函数等,不支持事务和行级锁,崩溃不能安全恢复。某些场景性能很好,最典型性能问题是表锁

6、查询优化(不同场景可能结论不同,适用于大部分场景)

  • 看查询计划
  • 使用索引,特别是覆盖索引
  • 是否请求了不需要的数据
  • 减少查询数据量,比如join时先过滤数据,或对中间数据做缓存表
  • 用联表代替子查询
  • 尽可能减少sql执行次数,减少请求网络延时
  • 使用正确而小的数据类型,比如内建类型存时间,整数类型存ip
  • 尽量避免null
  • 冗余数据避免联表
  • 分表分区
  • 业务结构优化
  • 硬件、中间件等支持

——————————————————————————————

  • 注1:本文很多概念来源于《高性能MySQL》
  • 注2:以上概念无特别说明适用于mysql,不同数据库可能会有出入
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,717评论 0 44
  • 原文:https://blog.csdn.net/ligupeng7929/article/details/794...
    MaskStar阅读 1,055评论 0 1
  • 一、设计技巧 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系...
    LazzMan阅读 1,183评论 0 1
  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 2,895评论 0 8
  • 数据库开发规范1. 数据库命名规范前缀对象前缀命名: 前缀命名一般用小写表的前缀: 业务模块组名前缀存储过程前缀:...
    PowerYangSoft阅读 2,452评论 0 8