在开始这篇文章之前,我们先来看一下这个问题:
在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?
索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。
一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。
转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 100 块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了。
与成人相比,孩子学习乐器的速度有多快?
他们学习第二或者第三语言的速度有多快?
他们学的快对吧?
为什么?
有多少人,当你听到某首歌,它会带你回到小时候?
有多少人,可能不是一首歌,但也许它是一种香味或食物,会带你回到几十年前?
因为信息与感情的结合成了一种长期记忆,我们做事情并不是符合逻辑的。
我们怎么做事?感情用事