比in效率更高的sql查询语句
2016-06-03 17:22
344 查看
很多时候用 exists是一个好的选择:
elect num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)
SELECT SUM(T1.C1)FROM T1 WHERE(
(SELECT COUNT(*)FROM T2 WHERE T2.C2=T1.C2>0)
SELECT SUM(T1.C1) FROM T1WHERE EXISTS(
SELECT * FROM T2 WHERE T2.C2=T1.C2)
两者产生相同的结果,但是后者的效率显然要高于前者。因为后者不会产生大量锁定的表扫描或是索引扫
描。
elect num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)
SELECT SUM(T1.C1)FROM T1 WHERE(
(SELECT COUNT(*)FROM T2 WHERE T2.C2=T1.C2>0)
SELECT SUM(T1.C1) FROM T1WHERE EXISTS(
SELECT * FROM T2 WHERE T2.C2=T1.C2)
两者产生相同的结果,但是后者的效率显然要高于前者。因为后者不会产生大量锁定的表扫描或是索引扫
描。
相关文章推荐
- db2 winds系统搭建数据库详解
- SQL Server优化50法
- Oracle关于执行计划的简要分析
- db2深度压缩表,节省表空间
- 使用Navicat Premium对sqlserver 2008进行表、字段及用户权限的精细化管理
- 使用Navicat Premium对sqlserver 2008进行表、字段及用户权限的精细化管理
- MYSQL启用日志,和查看日志
- sqlserver2008r2数据库关联孤立账号的方法
- sqlserver2008r2数据库关联孤立账号的方法
- MySQL中获取当前时间与时间戳
- Oracle ROWNUM用法和分页查询总结
- SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)
- 存储日志在mongodb实现和log4j一样的功能
- redis集群删除节点
- MYSQL建用户,建库,建表,授权
- mysql版同步数据
- 使用Java操作Mongodb
- 通过创建存储过程显示数据表的字段名和说明
- sqlserver2008r2数据库使用触发器对sa及其他数据库账号访问进行IP限制
- Mysql Cluster 动态增加数据节点