`
wujianjun
  • 浏览: 144489 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SQL查询语句

阅读更多

一、SQL语句优化:

1: exists 快于in

2: 数据量小时连接查询快于子查询,数据量大时子查询快于连接查询

3: select (*) 快于 select count(col)

4: 连接查询快于from多个表查询

如果查询结果来源于多个表中则用连接查询,如果最后结果来源于一个中则推荐用子查询

二、in可以分为三类: 

1、形如select  *  from  t1  where  f1  in  ('a','b'),应该和select  *  from  t1  where  f1  ='a'  or  f1='b'  或者  select  *  from  t1  where  f1  ='a'  union  all  select  *  from  t1  f1='b'比较效率,搂主可能指的不是这一类,这里不做讨论。 

2、形如select  *  from  t1  where  f1  in  (select  f1  from  t2  where  t2.fx='x'),其中子查询的where 里的条件不受外层查询的影响,这类查询一般情况下,自动优化会转成exist语句,也就是效率和exist一样。 

3、形如select  *  from  t1  where  f1  in  (select  f1  from  t2  where  t2.fx=t1.fx),其中子查询的where 里的条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情况和数据量多少,一般认为效率不如exists。 

除了第一类in语句都是可以转化成exists  语句的,一般编程习惯应该是用exists而不用in. 

三、如A,B两个表, 

当只显示一个表的数据如A,关系条件只一个如ID时,使用IN更快: 

select  *  from  A  where  id  in  (select  id  from  B) 

当只显示一个表的数据如A,关系条件不只一个如ID,col1时,使用IN就不方便了,可以使用EXISTS: 

select  *  from  A  where  exists  (select  1  from  B  where  id  =  A.id  and  col1  =  A.col1) 

当只显示两个表的数据时,使用IN,EXISTS都不合适,要使用连接: 

select  *  from  A  left  join  B  on  id  =  A.id   

所以使用何种方式,要根据要求来定。

分享到:
评论

相关推荐

    最全sql查询语句练习题汇总(面试必备)

    最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习...

    可视化sql查询语句生成器

    对于开发人员来说,尤其是需要频繁进行数据查询时,可以快速构建和测试SQL语句,节省了大量的时间。同时,它降低了错误率,因为大多数工具会自动检查语法和逻辑错误,确保生成的SQL语句是有效的。 另外,可视化界面...

    SQL查询语句大全(集锦经典)

    * FROM 子句:FROM 子句指定 SELECT 语句查询及与查询相关的表或视图,在 FROM 子句中最多可指定 256 个表或视图。 * WHERE 子句:WHERE 子句设置查询条件,过滤掉不需要的数据行,可以包括各种条件运算符。 * 联合...

    SQL查询语句生成器

    SQL语句通常分为SELECT(查询)、INSERT(插入)、UPDATE(更新)和DELETE(删除)四大类。 2. SQL查询语句生成器原理: 生成器通过用户友好的界面,让用户选择所需的操作(如查询、更新等),然后根据用户的输入...

    经典的SQL查询语句,将内容作为字段查询

    4. 图片和SQL语句:虽然SQL主要用于处理文本数据,但在实际应用中,我们可能需要与图像数据交互。这通常涉及到BLOB(Binary Large Object)类型的字段,用于存储非文本数据。查询这类数据时,可能需要用到`SELECT ...

    SQL查询语句使用详解,[收集].pdf

    FROM 子句指定 SELECT 语句查询及与查询相关的表或视图。在 FROM 子句中最多可指定 256 个表或视图,它们之间用逗号分隔。 * 指定多个表或视图:在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,...

    SQL查询语句大全集锦(超经典)

    为了使SQL语句更加清晰,通常会给表起别名。例如: ```sql SELECT username, b.cityid FROM usertable a, citytable b WHERE a.cityid = b.cityid; ``` 此外,`SELECT`语句不仅可以从表或视图中检索数据,还可以从...

    经典的sql查询语句大全,适合初学者,很详细

    14. **存储过程和函数**:预编译的SQL语句集合,可以接受参数,执行一系列操作并返回结果。 在"查询2.sql"中,你可能会找到这些概念的实际应用示例,每个示例都是一个学习和理解SQL的好机会。通过实践和研究这些...

    SQL查询语句的性能优化

    SQL查询语句的性能优化与索引,写得还不错,可以看看了

    SQL查询语句转换成图结构的算法设计与实现.pdf

    SQL查询语句转换成图结构的算法设计与实现 本文旨在设计并实现将SQL查询语句转换成图结构的算法,利用图神经网络对SQL查询语句进行分析和处理。该算法可以将SQL查询语句中的字段、表名、函数、操作符、值和关键字...

    SQL查询语句大全SQL查询语

    - 一组SQL语句的集合,要么全部执行成功,要么全部回滚。常用命令:`BEGIN TRANSACTION`, `COMMIT`, `ROLLBACK`. 9. **存储过程(Stored Procedure)** - 包含一组预编译的SQL语句,可多次调用。创建存储过程:`...

    sql查询语句集合,包括所有的查询语句

    sql查询语句集合sql查询语句集合sql查询语句集合sql查询语句集合sql查询语句集合sql查询语句集合sql查询语句集合sql查询语句集合

    数据库系统原理实验报告-SQL查询语句.doc

    "数据库系统原理实验报告-SQL查询语句" 数据库系统原理实验报告-SQL查询语句是关系数据库管理系统的核心组件之一。实验报告的主要目的是让学生熟悉关系数据库标准语言 SQL,並且掌握基本的 SQL 查询语句。 一、...

    ACCESS数据库与SQL查询语句生成示例

    在ACCESS中,通过“模块”可以输入和执行SQL语句,实现更复杂的数据处理。这对于需要自动化或批量处理数据的场景尤其有用。 5. **示例应用**:例如,假设我们有一个名为"Employees"的表,包含"ID"、"Name"和"Salary...

    SQL查询语句大全(集合多个教程)

    7. **存储过程**:预编译的SQL语句集合,可以接受参数,执行多次,提高性能,并提供封装和安全性的优点。 8. **触发器**:当满足特定条件时自动执行的SQL代码,常用于实现复杂的业务规则或审计功能。 9. **视图**...

    SQL查询语句的练习

    存储过程是一组预编译的SQL语句,可以封装在一起并多次调用,提高代码复用性和安全性。触发器则在特定的数据库事件发生时自动执行,如INSERT、UPDATE或DELETE操作。 8. **事务管理** SQL支持事务,确保数据的一致...

    对SQL查询语句语法及解题技巧的探讨.pdf

    对SQL查询语句语法及解题技巧的探讨.pdf

    数据库中SQL查询语句习题含答案.doc

    数据库中 SQL 查询语句习题含答案 本资源主要讲述了数据库中 SQL 查询语句的习题和答案,涵盖了数据库的基本概念和 SQL 查询语句的应用。通过这份资源,读者可以学习和掌握数据库中 SQL 查询语句的基础知识和高级...

    常用SQL查询语句--绝对经典

    经典的常用SQL查询语句,比较实用,一些常用的组合语句一一收集

    SQL查询语句用法及实例资料.ppt

    SQL查询语句用法及实例资料 SQL查询语句是数据库管理系统中最基本也是最重要的一部分,掌握SQL查询语句的使用是每个IT从业者必备的技能。本文将对SQL查询语句的用法进行详细的介绍,并提供实际的实例资料,帮助读者...

Global site tag (gtag.js) - Google Analytics