最近读完了 https://use-the-index-luke.com/ 这对开发者来说是一本不错的教材,读起来也非常轻松,在捕蛇者说的节目中也推荐过。我把要点整理了笔记,在这里分享一下。
SQL 写起来就像英语(比 Python 更像)。SQL 只要求你描述你想要的数据,而不要求你关心数据库如何把这些数据库查出来。在这方面,这个语言的抽象很好。但是涉及到性能,这种抽象就不完美了。写 SQL 的人必须了解一些数据库的工作原理才能写出性能比较好的 SQL 语句。
影响数据库性能最关键的因素是数据库的索引,而要建立合适的索引,不是运维或者 DBA 的职责,而是开发者的。因为建立索引需要的最关键的信息是查数据的“路径”,这些信息正好开发是最熟悉的。
这本书就是面向开发的索引教程。不涉及其他数据库的复杂知识。
这一系列的笔记一共 6 篇,第一篇写了基本的原理,后面的内容基本都是基于第一篇的原理的,聪明的人应该可以通过索引的原理推理出来后面的内容,以及那么做的道理。第 2 篇性能和 Join,第 4 篇 sort group,第 5 篇部分查询以及第 6 篇 DML,都很简单,基本上让你实现一个数据库你也会直觉地那么选择。第 3 篇非常有技巧性,不可错过。英语水平足够好可以直接阅读原文,只想看一些可以 take away 的知识的话我觉得我整理的笔记也可以。我删去了我觉得的一些比较啰嗦的解释,如果看不懂的话,可能还是需要回去读原文:)
最后,我也是一遍学习一遍记的,如果有不懂的,或者文中有错误,欢迎留言交流。
1
ZiLong 2020-04-07 22:52:12 +08:00
看起来很棒,向楼主学习!
|
2
nuistzhou 2020-04-07 23:00:34 +08:00 via iPhone
谢谢推荐这本书
|
3
liprais 2020-04-07 23:10:13 +08:00
不会用索引的情况应该改成优化器不会考虑索引
有可能优化器考虑了索引但是没有选的 |
4
sourceCoder 2020-04-08 01:08:55 +08:00 1
我感觉想要真正学习数据库,b'站有一个 up 猪翻译的 CMU 数据库课程比较的好,up 猪是 simviso 强烈推荐给你
|