求推荐mysql底层原理书籍

thanksmyfriend 2016-07-07 08:13:05
关于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底层是如何处理的,有没有系统介绍的书籍,而不是遇到某个问题了,只能找到些只言片语的介绍。


...全文
523 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2016-07-07
  • 打赏
  • 举报
回复
了解mysql底层设计,看下高性能mysql介绍
thanksmyfriend 2016-07-07
  • 打赏
  • 举报
回复
版主好迅速,多谢。 自己是转行的,数据库概论之前翻过,但没太当回事,看来还是要补基础。
ACMAIN_CHM 2016-07-07
  • 打赏
  • 举报
回复
关于非常深入的MYSQL书籍不一定能找到楼主需要的。 一般是两种资料可以使人达到MYSQL的极致水平。 一、大学的教材 《数据库系统概论(第四版)》 王珊 萨师煊 高等教育出版社 (这本书应该可以解释楼主提出的具体问题,索引的使用,执行计划的制定和执行) 二、MYSQL源代码,这个可以分析具体的某个实现。
LongRui888 2016-07-07
  • 打赏
  • 举报
回复
你可以看看 高性能mysql ,好像现在是第3版,这本书主讲 性能优化,你可以好好看看,内容丰富。 另外,你上面的例子,一般要分析哪个sql更快,可以看执行计划,不过上面的2中写法,也并不总是第一个方式就一定快。

56,682

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧