作者回复: 每一个表是好几棵B+树(应该是你理解对了但是手误),
其它的完全正确
作者回复: 这两个语句是都不用回表了,在“查找行”这个逻辑上是一样的,
但是select *要读和拷贝更多列到server,还要发送更多列给客户端,所以还是select id更快的。
好问题
作者回复: 理论篇的先到这里,实践篇的还有六篇索引相关。
1. 我们文中有这样的例子了哦。like “张%” 就是对name 字段的范围查询/模糊查询。 age 就是你说的最后一个字段啦 😄
2. 我们有两篇的篇幅来讲order by, 第14和16(15是答疑)
3. 根据查询需要😓
4. 等《如何给字符串字段加索引》发布哈
嗯索引的内容其实很多,基础篇两篇是不可能写完的,而且怕理论类太多大家读着累,把一些知识点放到实践篇了 @all
作者回复: 优秀
作者回复: 没有主键的表,innodb会给默认创建一个Rowid做主键
作者回复: 面试中题面越简单的问题越暗藏凶险,可见一斑…
可以按照调整key的大小的思路来说;
如果你能指出来5.6以后可以通过page大小来间接控制应该能加分吧
面试回答不能太精减,计算方法、前缀索引什么的一起上😄
作者回复: 👍🏿,多谢
多补一句,因为是二叉树结构,每次指针查找很大概率是触发随机磁盘读(比如很难刚好碰上一个节点和他的左右儿子刚好相邻)
作者回复: 问出这个问题表示你今天的文章看明白了👍🏿
看完明天的(下),我估计你就有答案了
作者回复: 内部有个有序数组,二分法
作者回复: B+树的叶子节点是page (页),一个页里面可以存多个行
作者回复: 赞👍🏿
作者回复: 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
作者回复: 1. 不会不会,只会分裂它要写入的那个页面。每个页面之间是用指针串的,改指针就好了,不需要“后面的全部挪动
2. 对,减为了增加空间利用率
作者回复: 好问题
不是,非主键索引上有5个值,分别是
(1,100),(1,200)... (1,600)
作者回复: 特别合理,因为现在很多业务插入数据很凶残,容易超过int 上限,
实际上是建议设置bigint unsigned
好问题