作者回复: 每一个表是好几棵B+树(应该是你理解对了但是手误),
其它的完全正确
作者回复: 这两个语句是都不用回表了,在“查找行”这个逻辑上是一样的,
但是select *要读和拷贝更多列到server,还要发送更多列给客户端,所以还是select id更快的。
好问题
作者回复: 理论篇的先到这里,实践篇的还有六篇索引相关。
1. 我们文中有这样的例子了哦。like “张%” 就是对name 字段的范围查询/模糊查询。 age 就是你说的最后一个字段啦 😄
2. 我们有两篇的篇幅来讲order by, 第14和16(15是答疑)
3. 根据查询需要😓
4. 等《如何给字符串字段加索引》发布哈
嗯索引的内容其实很多,基础篇两篇是不可能写完的,而且怕理论类太多大家读着累,把一些知识点放到实践篇了 @all
作者回复: 优秀
作者回复: 面试中题面越简单的问题越暗藏凶险,可见一斑…
可以按照调整key的大小的思路来说;
如果你能指出来5.6以后可以通过page大小来间接控制应该能加分吧
面试回答不能太精减,计算方法、前缀索引什么的一起上😄
作者回复: 没有主键的表,innodb会给默认创建一个Rowid做主键
作者回复: 👍🏿,多谢
多补一句,因为是二叉树结构,每次指针查找很大概率是触发随机磁盘读(比如很难刚好碰上一个节点和他的左右儿子刚好相邻)
作者回复: 问出这个问题表示你今天的文章看明白了👍🏿
看完明天的(下),我估计你就有答案了
作者回复: 内部有个有序数组,二分法
作者回复: 赞👍🏿
作者回复: 1. 就是语句开始执行前创建一个read-view
2. 我估计你要的是这个:
T his group of numbers is from a presentation Jeff Dean gave at a Engineering All-Hands Meeting at Google.
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns
Mutex lock/unlock 100 ns
Main memory reference 100 ns
Compress 1K bytes with Zippy 10,000 ns
Send 2K bytes over 1 Gbps network 20,000 ns
Read 1 MB sequentially from memory 250,000 ns
Round trip within same datacenter 500,000 ns
Disk seek 10,000,000 ns
Read 1 MB sequentially from network 10,000,000 ns
Read 1 MB sequentially from disk 30,000,000 ns
Send packet CA->Netherlands->CA 150,000,000 ns
作者回复: B+树的叶子节点是page (页),一个页里面可以存多个行
作者回复: 1. 不会不会,只会分裂它要写入的那个页面。每个页面之间是用指针串的,改指针就好了,不需要“后面的全部挪动
2. 对,减为了增加空间利用率
作者回复: 1. AHI不是hash索引的意思,这个结构是帮innodb 快速找到叶子结点,所以对于range 查询也有优化作用的
2. 不是,这样其实就已经是拿到结果了,不论是也就是说a in () 还是 “a=X or a=Y” 你说的这个过程就没有用上a的索引了。只是在拿到值以后做的判断
3.