Code Bye

求推荐mysql底层原理书籍

关于mysql优化的底层原理,现在能找到的都是只言片语的介绍,求推荐能系统介绍mysql底层原理的书籍或文章,谢谢。
举个例子,说明下想学习的内容:
如下数据表,id,品牌name,品牌分类id
+–+–+–+
| id | name     | cid |
+–+–+–+
|  1 | sumsang  |   1 |
|  2 | apple    |   1 |
|  3 | thinkpad |   1 |
|  4 | huawei   |   2 |
|  5 | xiaomi   |   2 |
+–+–+–+
创建数据表代码:
CREATE TABLE `product` (
`id` int(11) NOT NULL,
`name` char(20) NOT NULL,
`cid` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

— Dumping data for table `product`

INSERT INTO `product` (`id`, `name`, `cid`) VALUES
(1, “sumsang”, 1),
(2, “apple”, 1),
(3, “thinkpad”, 1),
(4, “huawei”, 2),
(5, “xiaomi”, 2);
要得到id,品牌name,品牌分类id,及该品牌分类id下的品牌name数量,如下格式:
+–+–+–+–+
| id | name     | cid | cidcount |
+–+–+–+–+
|  1 | sumsang  |   1 |        3 |
|  2 | apple    |   1 |        3 |
|  3 | thinkpad |   1 |        3 |
|  4 | huawei   |   2 |        2 |
|  5 | xiaomi   |   2 |        2 |
+–+–+–+–+
那么有两个方式实现:
(1)SELECT id,name,cid,(select count(id) from product where cid=p.cid) cidcount from product p
查询时间0.0003秒
(2)SELECT id,name,c.cid,cidcount from product inner join(select cid,count(id) cidcount from product group by cid ) c on c.cid=product.cid
查询时间0.0005秒

想学习的问题:第一种实现方式为什么比第二种快,mysql底层是怎么样处理的,有没有系统介绍的书籍,而不是遇到某个问题了,只能找到些只言片语的介绍。
解决方案

20

关于非常深入的MYSQL书籍不一定能找到题主需要的。
一般是两种资料可以使人达到MYSQL的极致水平。
一、大学的教材 《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社  (这本书应该可以解释题主提出的具体问题,索引的使用,执行计划的制定和执行)
二、MYSQL源代码,这个可以分析具体的某个实现。

10

你可以看看 高性能mysql ,好像现在是第3版,这本书主讲 性能优化,你可以好好看看,内容丰富。
另外,你上面的例子,一般要分析哪个sql更快,可以看执行计划,不过上面的2中写法,也并不总是第一个方式就一定快。

10

了解mysql底层设计,看下高性能mysql介绍

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求推荐mysql底层原理书籍