- 不同数据库之间的表关联
场景:拆分不同的子系统存放在不同的数据库中(存放在同一台服务器上),在获取数据是可能会从其他数据库中取数。
关联的时候只需要用要连接的数据库名+ “.” + 表名即可
两个数据库bd_a,db_b。db_a数据库中存放user表,字段id,name。bd_b数据库中存放业务表test_table,存储user_id字段,在查询业务表时,需要把用户的名称也显示出来
select a.*, b.name as user_name from test_table a
left join db_a.user b on a.user_id = b.id
2、清除数据库缓存命令:reset query cache;
同一条sql语法,如果语法执行过一次之后,第二次用的时间远远低于第一次的执行,因为第二次从缓存中读取了select结果
例:表中有1万笔数据,使用join连接
第一次执行时间:
第二次执行时间
作用:使用此语法用于可以针对优化sql语句之后,比对前后两条不同的sql语句那一条语句效率更高,需要在都没有缓存的情况下执行,才能得到真实的结果
3、视图
视图是一种虚拟存在的表,作为查询语句保存在数据字典中。
视图的优点:
- 简单:使用视图查询用户不需要关心后面对应的表结构、关联条件和筛选条件,对于用户来说已经是查询好的结果集
- 安全:使用视图的用户只能访问被允许查询的结果集,比如一张实体表中有十个字段,通过这张表创建一张视图,只允许查询其中五个字段,那么用户在使用视图查询时只能查询到五个字段信息。
- 数据独立:视图的结构一旦确定,对于实体表新增的字段,不会影响视图的查询
- 对于开发来说,可以简化调用时候的代码
创建视图语法:
create view test_view AS
select a.* from test_table a
left join test_table b on a.name = b.name
执行效率相对提升一点,跳过了SQL编译处理部分的动作,但是本质上并没有对数据查询的效率提高。
当执行查询视图语句,原表中的数据改变,重新查询,会再执行视图中的查询语句,更新原先视图中的数据。