SQL 优化和索引
怎么写出高效的 SQL 语句,一直是开发和数据库运维关心的话题。其实这里不仅仅是 SQL 语句如何写的问题,更要知道数据是怎么存储的。为什么在某列创建了索引以后,针对改列的查询变快了。
作者:lixiaofeng
从 0 开始,介绍数据是怎么一步一步存储到 B+树上的。根节点是怎么分裂的,中间节点是怎么分裂的,叶子节点是怎么分裂的。最后通过估算行大小来计算 3 层、4 层的 B+树可以存储多少数据。
作者:lixiaofeng
通过最直观的方式,带您了解 B+树上面的数据。清晰的展现聚集索引扫描,聚集索引查找,索引扫描,索引查找是怎么查找数据库。
作者:lixiaofeng
我们写 SQL 语句时,经常使用 inner join, outer join 等,此时左右两边的表到底是怎么连接的呢? 同样是 inner join, a inner b 和 c inner d, 数据库引擎的处理方式一样吗?
作者:lixiaofeng
当两张表 join 时, 数据库引擎是怎么选择物理连接方式的?当 where 条件的两个列上都有索引时, 数据库引擎怎么选择使用哪个索引成本更优?
作者:lixiaofeng
无论什么数据库,我们都可以从客户端看见某一天 SQL 语句的执行时间。 但是我们如何知道更加详细的信息呢? 比如读取 a 表用了多长时间? 读取了多少个页面? 是物理读取还是逻辑读取? 物理读取和逻辑读取有什么区别? 欢迎点击链接。
版权声明: 本文为 InfoQ 作者【lixiaofeng】的原创文章。
原文链接:【http://xie.infoq.cn/article/2d4baa2323286de05c352d347】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论