sql连接查询
来源:互联网 发布:mac版qq飞车 编辑:程序博客网 时间:2024/06/08 08:31
刚开始各种连接查询也知道咋查,但一直没明白有啥用,今天在优化后台代码的时候发现该方法被调用时等待了12~16s才响应,一看妈呀4次for循环,才200多条数据,循环里面还是查询语句,于是就想能否优化sql。
基本查询逻辑是:A表是主表,B C D表是附表(存有A.ID),要查A表所有数据(A.*),条件是A.ID在B表存在,CD表查找是否有对应数据。
内连接:一一对应的关系,左边没有数据右边也没有;
外连接:主结果附上外连接表数据,全外连接则互为主副表,即只要左表有数据就要列出对应的右表数据,只要右表有数据就要列出对应的左表数据
思路:AB关系是A受控于B,准确的说应该是查询B中A.ID所对应的A表信息,应该是 内连接(两个表之间可以用运算符连接的即确切符合某个逻辑的)关系,
A表与CD表只是单纯的列出关系,有数据就列出来,没有就无所谓,从优先角度讲,如果同时查ABCD表的数据应该是先查找AB表的符合数据再根据结果查找CD数据
SELECT
A.* ,C.ID,D.ID
FROM
A,B,C,D
WHERE
A.ID = B.A.ID--(内连接)
AND A.ID = C.A.ID(+)--(加号仅oracle 、where条件 可用,且不可表示全连接)
AND A.ID = D.A.ID(+);
之前考虑的思路是用子查询,还有case when(这个还是有直接的值比较方便)或者decode()来表述是否存在状态,由于是涉及多层子查询和嵌套故作罢。
这次处理认识到:
1查询思路很重要,一次查找还是多次查找直接意味着效率,查询思路的实现也有效率问题;
2再次认识连接查询,比以前相对深刻一点点,需要好好学习;
- SQL查询--连接查询
- SQL查询中的连接
- SQL查询中的连接
- Sql连接查询
- SQL连接查询
- SQL连接查询类型
- sql连接查询
- SQL查询中的连接
- Sql连接查询
- SQL查询连接实例
- Sql连接查询
- sql表连接查询
- Sql连接查询
- sql查询字段连接
- sql连接查询大全
- SQL连接查询
- SQL自连接查询
- SQL连接查询(汇总)
- nginx代理服务器
- 正则判断文本是否是中文
- tail,more查看日志(定点和翻页)
- 《Flask Web开发》学习笔记之bug--(5)【jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'endlock'】
- 实体类注解生成数据库表
- sql连接查询
- 枚举进程线程
- 06 CSS-margin
- python-tesseract下载安装及使用
- hdu 2642 star(二维树状数组)
- Criteria用法
- ASP.NET DataList添加删除按钮
- hibernate注解方式(类级别和属性级别)
- 输入16进制的数字输出10进制