摘要: 这篇博文讲述如何优化JOIN查询带有排序的情况。大致分为对连接属性排序和对非连接属性排序两种情况。插入测试数据。 对连接属性进行排序 现要求对t1和t2做内连接,连接条件是t1.id=t2.id,并对连接属性id属性进行排序(MySQL为主键id建立了索引)。 有两种选择,方式一[...ORDER 阅读全文
posted @ 2017-09-18 10:56 付大石 阅读(15389) 评论(1) 推荐(2) 编辑
摘要: 这篇博文讲述如何优化扫描速度。我们通过MySQL的JOIN(二):JOIN原理得知了两张表的JOIN操作就是不断从驱动表中取出记录,然后查找出被驱动表中与之匹配的记录并连接。这个过程的实质就是查询操作,想要优化查询操作,建索引是最常用的方式。那索引怎么建呢?我们来讨论下,首先插入测试数据。 左连接 阅读全文
posted @ 2017-09-14 17:49 付大石 阅读(9959) 评论(1) 推荐(2) 编辑
摘要: 这篇博文讲述如何优化内循环的次数。内循环的次数受驱动表的记录数所影响,驱动表记录数越多,内循环就越多,连接效率就越低下,所以尽量用小表驱动大表。先插入测试数据。 内连接谁当驱动表 实际业务场景中,左连接、右连接可以根据业务需求认定谁是驱动表,谁是被驱动表。但是内连接不同,根据嵌套循环算法的思想,t1 阅读全文
posted @ 2017-09-12 08:26 付大石 阅读(13312) 评论(0) 推荐(4) 编辑
摘要: 表连接算法 Nested Loop Join(NLJ)算法: 首先介绍一种基础算法:NLJ,嵌套循环算法。循环外层是驱动表,循坏内层是被驱动表。驱动表会驱动被驱动表进行连接操作。首先驱动表找到第一条记录,然后从头扫描被驱动表,逐一查找与驱动表第一条记录匹配的记录然后连接起来形成结果表中的一条记。被驱 阅读全文
posted @ 2017-09-11 20:21 付大石 阅读(10589) 评论(3) 推荐(5) 编辑
摘要: JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 CREATE TABLE t_blog( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(50 阅读全文
posted @ 2017-09-07 17:57 付大石 阅读(246655) 评论(9) 推荐(28) 编辑
摘要: ArrayList是我们经常用到的一个类,下面总结一下它内部的实现细节和使用时要注意的地方。 基本概念 ArrayList在数据结构的层面上讲,是一个用数组实现的list,从应用层面上讲,就是一个容量会自己改变的数组,具有一系列方便的add、set、get、remove等方法,线程不安全。先上张类图 阅读全文
posted @ 2017-08-02 11:20 付大石 阅读(1627) 评论(0) 推荐(0) 编辑
摘要: 随着JDK的发展,一些设计缺陷或者性能不足的类库难免会被淘汰,最常见的就是Vector、Stack、HashTable和Enumeration了。 Vector(@since 1.0) 首先看看Vector的UML类图,可以看出,他是一个与ArrayList有着相同继承体系的类,大致功能也和Arra 阅读全文
posted @ 2017-07-20 21:33 付大石 阅读(1454) 评论(0) 推荐(1) 编辑
摘要: 内部类的分类 内部类分为普通内部类,局部内部类,匿名内部类,嵌套类,接口内部类。比较陌生的就是接口内部类了,顾名思义就是在接口中定义一个内部类,这个内部类默认是public static的,用处不大。 内部类的创建需要外部类的实例的引用 我们都知道,内部类可以肆无忌惮的访问外部类的成员,这是怎么办到 阅读全文
posted @ 2017-07-14 17:25 付大石 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 整理自知乎;整理自知乎;整理自知乎 静态代理与动态代理 整理自知乎;整理自知乎;整理自知乎 静态代理与动态代理 代理模式是一种设计模式,典型的分为静态代理和动态代理。 先讲静态代理 首先给个场景,现有个FontProvider接口,用于获取字体 public interface FontProvid 阅读全文
posted @ 2017-07-04 16:45 付大石 阅读(1664) 评论(0) 推荐(0) 编辑
摘要: 一些专业名词 候选码:可唯一标识某一元组的属性组,属性组中各个属性缺一不可。【t_student】(学号,姓名,学院),姓名可能会重复,所以其中学号可以唯一标识一条记录,学号就是t_student的候选码。那么假设姓名不会重复,那么候选码就有学号和姓名两个。 又比如【t_grade】(学号,课程,成 阅读全文
posted @ 2017-05-15 17:52 付大石 阅读(1063) 评论(0) 推荐(0) 编辑