当前位置: 首页 > news >正文

网站建设与管理模拟题1阳江招聘网收银

网站建设与管理模拟题1,阳江招聘网收银,图片网站模板下载,做博客网站赚钱吗为什么 EXISTS 更高效#xff1f; EXISTS 提前终止#xff1a; EXISTS 一旦在子查询中找到第一个匹配项#xff0c;就会立即返回 TRUE#xff0c;不再继续扫描子查询中的其他记录。IN 必须扫描整个子查询的结果集#xff0c;将所有结果与主查询的每一行进行对比。大数据集…为什么 EXISTS 更高效 EXISTS 提前终止 EXISTS 一旦在子查询中找到第一个匹配项就会立即返回 TRUE不再继续扫描子查询中的其他记录。IN 必须扫描整个子查询的结果集将所有结果与主查询的每一行进行对比。大数据集性能差异大 当子查询的数据集很大如几万到几百万行时EXISTS 的提前终止特性会显著减少不必要的扫描。IN 在子查询中会生成临时结果集这会导致更多的内存占用和性能开销。EXISTS 替换 IN 的写法 IN 的原始写法 SELECT * FROM employees e WHERE e.department_id IN ( SELECT d.department_id FROM departments d WHERE d.department_name SALES ); 这段 SQL 查询的逻辑是查询部门名为 ‘SALES’ 的所有员工。 这里的 IN 先生成一个临时结果集d.department_id并与 e.department_id 进行对比。 使用 EXISTS 替换 IN SELECT * FROM employees e WHERE EXISTS ( SELECT 1 FROM departments d WHERE d.department_name SALES AND d.department_id e.department_id ); 这段 SQL 查询的逻辑是等价的。 不同点在于 EXISTS 只要找到一个匹配项d.department_id e.department_id就返回 TRUE这时主查询中的这条 e 记录就被返回。 子查询中的 SELECT 1实际上只要返回一行数据就能满足 EXISTS 条件不需要返回字段值。 ⚙️ EXISTS 和 IN 的区别 区别点INEXISTS子查询结果生成子查询的完整结果集只要找到一个匹配的值就立即返回子查询数据量适用于小数据集适用于大数据集效率扫描整个子查询的结果集提前终止效率高关联条件主表的每一行与子查询的结果集比较子查询的条件与主表的每一行比较内存使用子查询的结果集可能存储在临时表中不生成临时表减少内存开销索引利用索引不一定有效可能全表扫描更容易利用索引 何时使用 EXISTS 替换 IN 场景推荐使用方式原因子查询返回大数据量EXISTS子查询中数据大EXISTS 可以提前终止子查询返回小数据量IN子查询小数据集IN 性能也很好子查询包含 NULL 值EXISTSIN 会因为 NULL 导致结果不匹配主表数据多EXISTS主表数据多EXISTS 在行对比上更高效子查询不依赖主表IN如果子查询不依赖主表IN 更清晰子查询依赖主表EXISTS描子查询依赖主表的字段EXISTS 更高效 示例 1替代 IN 的常用场景 原始 SQL (使用 IN) SELECT e.employee_name FROM employees e WHERE e.department_id IN (SELECT d.department_id FROM departments d WHERE d.department_name LIKE SALES% ); 替换为 EXISTS SELECT e.employee_name FROM employees e WHERE EXISTS (SELECT 1 FROM departments d WHERE d.department_name LIKE SALES% AND d.department_id e.department_id ); 示例 2避免 NULL 值的坑 原始 SQL (使用 IN) SELECT * FROM employees e WHERE e.department_id IN (SELECT d.department_id FROM departments d WHERE d.department_name SALES ); 替换为 EXISTS SELECT * FROM employees e WHERE EXISTS (SELECT 1 FROM departments d WHERE d.department_name SALES AND d.department_id e.department_id ); 示例 3子查询依赖主表的场景 原始 SQL (使用 IN) SELECT * FROM orders o WHERE o.customer_id IN (SELECT c.customer_id FROM customers c WHERE c.customer_type o.customer_type ); 替换为 EXISTS SELECT * FROM orders o WHERE EXISTS (SELECT 1 FROM customers c WHERE c.customer_type o.customer_type AND c.customer_id o.customer_id ); 总结 场景推荐使用子查询返回大结果集EXISTS子查询不依赖主表字段IN子查询可能返回 NULLEXISTS子查询依赖主表字段EXISTS子查询小、主表大EXISTS主表小、子查询大EXISTS 小结 EXISTS 在数据集较大时性能更高尤其是子查询的返回数据量较大或包含 NULL 时。EXISTS 避免了 IN 的“NULL 陷阱”更安全。当子查询依赖主表的字段时EXISTS 比 IN 更高效因为不需要生成中间结果集。EXISTS 可以提前终止子查询在数据量较大时性能优势更明显。
http://www.w-s-a.com/news/937526/

相关文章:

  • 门户网站是指提供什么的网站网站优化需要工具
  • 和小男生做的网站代理公司注册步骤
  • 天猫网站建设的目标是什么seo有些什么关键词
  • 网站前端建设都需要什么莱芜信息港网页
  • 如何做360网站优化网站建设培训教程新手入门到精通
  • 做网站有的浏览器怎么做网站网站赚钱
  • 织梦 做网站 教程百度登录个人中心官网
  • ftp怎么修改网站wordpress分享积分
  • 营销策划方案的步骤西安关键词优化软件
  • 南宁自己的网站移动互联网技术学什么
  • 2017湖北建设教育协会网站自己接单做网站
  • 定制网站建设制作h5网站要多久
  • 泰安中呼网站建设有限公司 概况个人网站的设计与实现参考文献
  • 圣诞节网站怎么做怎么获取网站的图片
  • 想找个人做网站音乐网站建设教程视频教程
  • 网站收录一键提交阿里巴巴做网站多少钱
  • 怎么做网站投放广告商务网站建设实训报告
  • 服装代销的网站源码国内电子商务网站有哪些
  • qq空间怎么做网站做企业平台的网站有哪些
  • 网站的优缺点wordpress手机适配模板中文
  • 福州网站建设H5广告公司简介简短
  • 网站404页面的作用app开发郑州
  • 亚马逊中国网站建设目标网站建设的策划
  • 林州网站建设服务徐州网站建设
  • 如何检测网站死链景德镇网站建设哪家好
  • 旅游网站开发目标天津专业做网站公司
  • 名者观看网站快手小程序
  • 网络架构扁平化windows优化大师好不好
  • 安康养老院收费价格表兰州seo整站优化服务商
  • 网站开发技术方案模板无锡网站建设推荐