设为首页
|
收藏本站
|
繁体中文
|
手机版
整站搜索
资讯
技巧
源码
行业
设备(待改)
资源
信息库(待改)
产品
作品(待改)
活动
培训(视频)
平台(待改)
二级(待改)
互动(作废)
交易
Access培训
-
Access开发平台
-
Access行业开发
首页
资讯
技巧
源码
行业
资源
活动
关于
技巧
ACCESS数据库
启动/设置/选项/背景
修复/压缩
安全/加密/解密
快捷键
版本升级/其它等
数据表
命名方式/设计规范
表设计
查询
Sql语言基础
选择查询
更新查询
删除查询
追加查询
生成表查询
交叉表查询
SQL特定查询
查询参数
查询综合应用
界面/窗体/控件
标签
文本框
命令按钮
组合框/列表框
选项组/复选框/选项按钮
选项卡
子窗体
窗体本身/综合应用
其它
报表打印
报表设计
高级报表
模块/函数/VBA/API/系统
VBA基础
内置函数
调试/跟踪/Debug
模块/类模块
API/COM/系统相关
字符数字日期
网络通信游戏
加密解密安全
文件处理
经典算法
宏/菜单/工具栏/功能区
宏/脚本
菜单/工具栏
功能区/Ribbon
图表/图形/图像/多媒体
图表
图形/图像
音频
视频/动画
DAO/链接表/ADO/ADP
DAO/链接表/ODBC
ADO/RDO
ADP
ActiveX/第三方控件/插件
Treeview树控件
ListView列表控件
Toolbar工具栏控件
微软其它控件
Dbi-Tech
CodeJock
Grid++Report
FastReport
ComponentOne
加载项/插件/Addin
OFFICE集成/导入导出/交互
Excel导入导出/交互
Word导入导出/交互
PPT交互
Outlook控制/邮件
Text文本文件/INI/CSV
PDF/SWF/XML格式
CAD格式
Sharepoint/其它Office
SqlServer/其它数据库
表
视图
存储过程/触发器
函数
用户/权限/安全
调试/维护
SqlServer其它/综合
发布/打包/文档/帮助
开发版/运行时
打包/发布/部署
开发文档/帮助制作
Access完整行业系统
采购管理系统
销售管理系统
仓库管理系统
人力资源管理HRM
CRM管理系统
MRP/ERP管理系统
BRP/流程优化
其它管理系统
心得/经验/绝招
其它/杂项
Excel技巧
Excel应用与操作
Excel开发编程
Word技巧
Word应用与操作
Word开发编程
Outlook技巧
Outlook应用与操作
Outlook开发编程
热门文章
解决SQL中in参数在存储..
SQL Server中的I..
SQL Server中EX..
SSMA进行 mysql ..
Sql语法大全提升篇(Ac..
VB Access VBA..
最新文章
SQLite数据库可视化管..
ACCESS通过VBA动态..
access数据库升迁导入..
ACCESS(mdb)数据..
SSMA(Sql Serv..
ACCESS数据库迁移到S..
联系方式
Access交流网(免费Access交流)
QQ:18449932
网 址:
www.access-cn.com
当前位置:
首页
>
技巧
>
SqlServer/其它数据库
SqlServer/其它数据库
SQL Server中的IN与EXISTS的异同
有时候会将一列和一系列值相比较。最简单的办法就是在where子句中使用子查询。在where子句中可以使用两种格式的子查询。
in是确定提供给定的值是否与子查询或列表中的值相匹配
exists指定一个子查询,检测行的存在。
他是不返回列表的值的.只是返回一个ture或false的结果,
第一种格式是使用IN操作符:
... where column in(select * from ... where ...);
第二种格式是使用EXIST操作符:
... where exists (select 'X' from ...where ...);
我相信绝大多数人会使用第一种格式,因为它比较容易编写,而实际上第二种格式要远比第一种格式的效率高。可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。
第二种格式中,子查询以‘select 'X'开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定在where语句中使用的列存在索引)。相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。
通过使用EXISTS,系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。
同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。
发布人:zhuyiwen-office中国
分享到:
点击次数:
更新时间:2013-07-20 15:34:15 【
打印此页
】 【
关闭
】
上一条:
Access如何将二进制UTF8转成字符串
下一条:
Web Service在Access中的应用技巧
相关文章
•
SQLite数据库可视化管理工具汇总
•
ACCESS通过VBA动态设置传递查询的值
•
access数据库升迁导入sql server2005或Sql server 2008的方法及步骤
•
ACCESS(mdb)数据库转成Sql Server(mdf)数据库的办法
•
SSMA(Sql Server迁移助手)SSMA SQL Server Migration Assistant for MySQL使用方法
•
ACCESS数据库迁移到SQLSERVER数据库两种方法(图文详解)
•
SSMA进行 mysql 到 sqlserver 的数据库迁移
•
把ACCESS转成SQL数据库的方法
热门文章
[2017-02-20]
MySQL replace函数替换字符串语句的用法
[2013-07-20]
SQL Server中的IN与EXISTS的异同
[2017-01-16]
Sql语法大全提升篇(Access及Sql Server)
[2013-07-25]
Access链接SQL的方法
[2016-12-10]
SQL Server瞬间快速清除日志的代码
[2017-01-21]
sql Server 2005提示未能加载包"Microsoft SQL Management Studio Package
热门产品