随笔分类 - 数据库
摘要:这篇博文讲述如何优化JOIN查询带有排序的情况。大致分为对连接属性排序和对非连接属性排序两种情况。插入测试数据。 对连接属性进行排序 现要求对t1和t2做内连接,连接条件是t1.id=t2.id,并对连接属性id属性进行排序(MySQL为主键id建立了索引)。 有两种选择,方式一[...ORDER
阅读全文
摘要:这篇博文讲述如何优化扫描速度。我们通过MySQL的JOIN(二):JOIN原理得知了两张表的JOIN操作就是不断从驱动表中取出记录,然后查找出被驱动表中与之匹配的记录并连接。这个过程的实质就是查询操作,想要优化查询操作,建索引是最常用的方式。那索引怎么建呢?我们来讨论下,首先插入测试数据。 左连接
阅读全文
摘要:这篇博文讲述如何优化内循环的次数。内循环的次数受驱动表的记录数所影响,驱动表记录数越多,内循环就越多,连接效率就越低下,所以尽量用小表驱动大表。先插入测试数据。 内连接谁当驱动表 实际业务场景中,左连接、右连接可以根据业务需求认定谁是驱动表,谁是被驱动表。但是内连接不同,根据嵌套循环算法的思想,t1
阅读全文
摘要:表连接算法 Nested Loop Join(NLJ)算法: 首先介绍一种基础算法:NLJ,嵌套循环算法。循环外层是驱动表,循坏内层是被驱动表。驱动表会驱动被驱动表进行连接操作。首先驱动表找到第一条记录,然后从头扫描被驱动表,逐一查找与驱动表第一条记录匹配的记录然后连接起来形成结果表中的一条记。被驱
阅读全文
摘要:JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 CREATE TABLE t_blog( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(50
阅读全文
摘要:一些专业名词 候选码:可唯一标识某一元组的属性组,属性组中各个属性缺一不可。【t_student】(学号,姓名,学院),姓名可能会重复,所以其中学号可以唯一标识一条记录,学号就是t_student的候选码。那么假设姓名不会重复,那么候选码就有学号和姓名两个。 又比如【t_grade】(学号,课程,成
阅读全文
摘要:好久没碰《数据库系统概论》了,最近翻了翻发现好多专业名词都忘记了, 现在有空特地记录下。 名词解释 数据:数据就是数据库中存储的基本数据,比如学生的学号、学生的班级数据库:存放数据的仓库数据库管理系统:数据库软件,如MySQL、Oracle数据库系统:数据库+数据库管理系统+应用程序+数据库管理员(
阅读全文
摘要:SQL查询语句有多种,下面总结下。首先先建三张表用于后面的实验 1.单表查询 仅涉及一张表的查询语句称为单表查询语句,举个栗子。 SELECT * FROM student; SELECT FROM student WHERE sage>=20; 这些语句仅涉及了一张表,所以是单表查询语句。 2.多
阅读全文