关于SQL的连接查询

来源:互联网 发布:基金仓位测算数据 编辑:程序博客网 时间:2024/05/16 15:50
在sql语句中left join 的语法,select 字段 from 表a left 表b on 表a与表b的关联字段 where 筛选条件,多张表进行关联,只需要依次left join 即可,where的查询条件过滤需要放在最后一步


基本使用环境:做关联的表不能太大,如果可以左表放数据少的表,不要关联太多的表,在关联很多表时返回值字段能做到精简就精简


查询原理:先将左表数据查询出来,然后再依据 on 后面的条件查询 右表,然后将左右表的所有字段都并为一行即总列数为所有关联表列数相加


而关于数据条数(总行数):首先左表有的行一定会出现,即时右表没有也会出现,只是右表的字段对应的值为null,其次是右表中凡是关联到的行都会出现

即时关联的字段值是相同的也出现只是左表字段对应的值重复即可


使用要求:在使用left join操作时为了保证数据不丢失,左表为主数据表(不是数据量大表)
例子详解:人员表   人员详细信息表  这两张表关联,查询人员的详细信息操作,则人员为主表,因为人员不能缺少丢失 详细信息如果没有关联到可以为null
例如查询人员详细信息中地址的关联信息(比如有哪些人,房价)则人员详细信息表为主表,还是因为必须要保证所有的地址信息都要查询出来,即时没有关联到数据

sql的优化:left join 在遵循基本的使用环境时基本是没有问题的 但是当管理的表的数据量还是太大时就需要做一些基本的调优
调优的原来还是尽量缩小所关联的表的大小,还有就是关联时要设置索引进行关联
例: select * bumen a left join (select * from memb where id=?) b on a.id=b.id当memb表数据量过大时即可这样操作来缩小所关联表的大小,多张表的优化依此类推
0 0
原创粉丝点击