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

wordpress 评论框登陆石家庄网站建设seo公司哪家好

wordpress 评论框登陆,石家庄网站建设seo公司哪家好,范湖网站建设团队,兰陵建设局网站从效果上看: IN运算符:是看某个值是否存在于一个集合里。这个集合可以是静态列表,也可以是子查询。EXISTS运算符:用于判断一个子查询是否有结果,他只关心子查询是否返回了至少一行结果,不关心具体返回什么。…

从效果上看:

  1. IN运算符:是看某个值是否存在于一个集合里。这个集合可以是静态列表,也可以是子查询。
  2. EXISTS运算符:用于判断一个子查询是否有结果,他只关心子查询是否返回了至少一行结果,不关心具体返回什么。

从性能上看:

  1. IN从语义上来说,是会先执行子查询,然后把列表确定了,之后再用外层表的每一行记录去看某个字段的值是否IN的列表里面存在,存在就返回。比如select * from A where A.id in (select B.a_id from B),会使用A表的每一行记录去执行select 1 from B where B.id=A.id,因为in的字段是可以使用索引的(这里的A.id可以使用索引),所以适合外层表有相关字段有索引的情况。有索引时,外层表的相关字段有索引时相当于是走**range** 扫描,性能极高(类似多个 **=** 查询的合并)。但是这个也不一定,因为MySQL优化器可能会进行优化。比如SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE status = ‘paid’);MySQL在IN里面是子查询,并且子查询是的user_id字段有索引,那么可能 会 **IN** 转换为 **JOIN** **EXISTS**(这个要看优化器的选择了)。
  2. EXISTS 从语义上来说,他是外层表驱动内层表的,即,EXISTS外层表的每一行都会去执行子查询,所以外层的表数量要尽量少一些,内层表的查询速度要尽量快一些。比如select * from A where exist(select 1 from B where B.id=A.id),会使用A表的每一行记录去执行select 1 from B where B.id=A.id,只要存在一个能匹配的数据,就返回A的这一行数据。exists时候外层数据量少的,子查询比较大的,并子查询中可以利用索引的情况。这样的话,效率也不会低,因为外层循环少,内层可以利用索引,就算数据量大,但是查询也不慢,所以速度快。

但是实际上的性能不一定是上面分析的这样的,因为MySQL的优化器可能会对他们进行优化,你写的in可能会被优化为exist,所以谁效率高谁效率低还是要看实际的执行效果的。

注意:尽量不要使用not in,因为not in后面的集合中,如果存在null,那么结果一定是空。所以可能会导致你判断错误,你给他一个列表,想拿到列表中存在的数据,但是不小心放进去一个null值,结果一条数据也找不到了。

比如

-- 使用 IN:查找有订单的用户
SELECT * FROM sys_user 
WHERE user_id IN (SELECT user_id FROM sys_order);
/* 结果:Alice (1), Bob (2)说明:IN 忽略子查询中的 NULL 值 */-- 使用 EXISTS:查找有订单的用户
SELECT * FROM sys_user u
WHERE EXISTS (SELECT 1 FROM sys_order o WHERE o.user_id = u.user_id
);
/* 结果:Alice (1), Bob (2)说明:EXISTS 同样忽略 NULL */
-- ⚠️ 危险示例:使用 NOT IN(含 NULL)
SELECT * FROM sys_user 
WHERE user_id NOT IN (SELECT user_id FROM sys_order);
/* 结果:空集!(即使 Charlie 没有订单)原因:子查询包含 NULL => 整个条件无效 */-- ✅ 安全方案:使用 NOT EXISTS
SELECT * FROM sys_user u
WHERE NOT EXISTS (SELECT 1 FROM sys_order o WHERE o.user_id = u.user_id
);
/* 结果:Charlie (3)说明:正确找到无订单用户 */

结论:

"NOT IN 后的集合如果存在 NULL,结果一定是空"
"永远用 NOT EXISTS 替代 NOT IN"

http://www.dtcms.com/a/584855.html

相关文章:

  • 怎么学习企业网站维护厦门做网站个人
  • 网站建设与管理简介卡盟平台
  • 企业网站seo怎么做wordpress 导出菜单
  • 成都 企业网站设计做网站时间
  • 秦皇岛市建设局网站关于装配式专家如何免费注册一个网站
  • 网站建设文化传播有限公司软件开发公司组织架构
  • 公司营销型网站开发中国建设银行东营分行网站
  • 重庆秀山网站建设公司网站开发商问花店老板
  • 房产经济人怎么做网站wordpress插件 占用内存
  • 厦门网站建设系统google搜索引擎优化
  • 购物网站制作例子visual studio 做网站
  • 网页制作的网站深圳国内网站建设
  • 深圳广告设计公司网站wordpress iis7 伪静态规则
  • 51网站一起做网店广州重庆做seo网站优化选择哪家
  • 福州网站建设电话模板素材图片
  • 淘宝做导航网站有哪些功能土建设计网站
  • 正保建设教育网站360门户网站怎样做
  • 网站建设与管理期末试卷wordpress图表插件
  • 网站开发 票种国外建设网站情况报告
  • 公司注册地址和办公地址油烟机seo关键词
  • 部队内网网站建设方案广东东莞邮编
  • 网站开发后端最新技术seo在线网站诊断推推蛙
  • 苏州做网站的织梦大气婚纱影楼网站源码
  • 建站哪家好用兴田德润专业的深圳网站建设
  • 色块网站小说排行榜2020前十名
  • 成都公司网站开发seo推广教程
  • 网站建设企业网站建设网站优化方案和实施
  • 怎么做论坛的网站网站可能存在什么问题吗
  • 做网站的主要作用wordpress更改忘记密码样式
  • 广西人才网济南专业seo推广公司