思考并回答以下问题:
MySQL的COUNT语句是怎么执行的
思考并回答以下问题:
- COUNT函数的参数可以是任意表达式,该函数用于统计在符合搜索条件的记录中,指定的表达式不为NULL的行数有多少。怎么理解?
- 每一条聚簇索引记录都可以在二级索引中找到唯一的一条二级索引记录与其相对应。怎么理解?
设计MySQL的大叔为何偏爱ref
思考并回答以下问题:
- 使用某个索引执行查询时,需要扫描的记录越少,就越可能使用这个索引来执行查询。怎么理解?
- B+树叶子节点中的记录是按照索引列的值从小到大排序的。怎么理解?
- 对于所有key1列值等于
'a'
的二级索引记录,由于它们是按照id列的值排序的,所以我们很大可能通过顺序I/O的方式找到下一个数据页,回表操作带来的性能开销较小。怎么理解? - 由于需要扫描的二级索引记录对应的id值是无序的,所以执行回表操作时,需要访问的聚簇索引记录所在的数据页很大可能就是无序的,这样会造成很多随机I/O。怎么理解?
MySQL的server层和存储引擎层是如何交互的
思考并回答以下问题:
- SQL和YAML都是声明式的语法。怎么理解?
- Extra列有一个
Using index condition
的提示,这表明会将有关idx_name二级索引的查询条件放在存储引擎层判断一下,这个特性就是所谓的索引条件下推(Index Condition Pushdown
,简称ICP)。怎么理解? - 得到一条二级索引记录后立即去回表,而不是把所有的二级索引记录都拿到后统一去回表。怎么理解?