求推荐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底层是如何处理的,有没有系统介绍的书籍,而不是遇到某个问题了,只能找到些只言片语的介绍。