多表查询(整理)

一、多表关系

概述:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间互相关联,所以各个表结构之间也存在着各种联系。

基本上有三种:一对多(多对一),多对多,一对一。

  • 一对多(多对一)

 

  • 多对多

 

  • 一对一

 辅助建表内容:

-- 多表查询 --
create table student(
    id int auto_increment primary key comment '主键id',
    name varchar(10) comment '姓名',
    no varchar(10) comment '学号'
)comment '学生表';
insert into student values (null,'黛绮丝','2000100101'),
                           (null,'谢逊','2000100102'),
                           (null,'殷天正','2000100103'),
                           (null,'韦一笑','2000100104');

create table course(
    id int auto_increment primary key comment '主键id',
    name varchar(10) comment '课程名称'
)comment '课程表';
insert into course values (null,'Java'),(null,'PHP'),(null,'MySQL'),(null,'Hadoop');

create table student_course(
    id int auto_increment primary key comment '主键id',
    studentid int not null comment '学生id',
    courseid int not null comment '课程id',
    constraint fk_studentid foreign key (studentid) references student(id),
    constraint fk_courseid foreign key (courseid) references course(id)
)comment '学生课程中间表';
insert into student_course values (null,1,1),(null,1,2),(null,1,3),
                                  (null,2,2),(null,2,3),(null,3,4);

create table tb_user(
    id int auto_increment primary key comment '主键id',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '1: 男 , 2: 女 ',
    phone char(11) comment '手机号'
)comment '用于多表查询的用户基本信息表';
insert into tb_user(id,name,age,gender,phone)
  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对多表关联查询的优化,可以考虑以下几个方面: 1. 索引优化:确保参与关联的列上有合适的索引,以加快查询速度。可以通过使用主键、唯一索引、组合索引等方式来优化。 2. 避免全表扫描:尽量避免在关联查询中使用不带有索引的列,这会导致全表扫描,影响性能。可以通过添加索引或者调整查询条件来避免全表扫描。 3. 合理使用JOIN语句:选择合适的JOIN类型,如INNER JOIN、LEFT JOIN等,根据实际情况来确定。还可以根据需求调整关联表的顺序,将数据量较小的表放在前面,以减少关联操作的数据量。 4. 使用子查询或临时表:对于复杂的关联查询,可以考虑使用子查询或者临时表来优化性能。将复杂的查询拆分成多个简单的子查询,可以减少关联操作的数据量。 5. 避免重复查询:如果某个查询中需要多次关联同一张表,可以考虑将结果缓存起来,避免重复查询。可以使用临时表或者应用程序级别的缓存来实现。 6. 适当使用索引覆盖:在查询中只选择需要的列,避免不必要的列查询,可以减少IO操作,提高查询性能。 7. 数据库优化:定期进行数据库优化工作,如表结构优化、统计信息更新、磁盘碎片整理等,以保持数据库的性能。 以上是一些常见的优化方法,具体的优化策略还需要根据具体的业务需求和数据库结构进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值