IP地址配置HTTPS 内网IP配置HTTPS保姆教程
本文介绍了在Nginx中配置HTTPS的完整流程:1)使用OpenSSL生成自签名证书和私钥;2)解密私钥以避免重启时输入密码;3)配置Nginx支持HTTPS,包括指定证书路径、设置安全协议和加密套件等。适用于开发、测试和内网环境,但需注意自签名证书会触发浏览器警告,生产环境建议使用CA签发的正式证书。通过简单的命令和配置即可实现基本的HTTPS加密保护。

为初学者学生准备,轻松掌握 IN 查询与优化技巧!
最常见的 IN 用法是过滤字段值是否在给定列表中:
SELECT *
FROM students
WHERE grade IN ('A', 'B', 'C');
这种方式比起多个 OR 更简洁清晰,特别是匹配多个条件时超高效率。对初学者而言,上手极快。
图示:IN 操作的逻辑流程表
alt:逻辑表格展示 IN 和 NOT IN 操作的区别。 ([scaler.com][1], [w3resource][2], [blog.sqlauthority.com][3])
当匹配值存放在另一张表中,子查询是典型用法:
SELECT *
FROM orders
WHERE user_id IN (
SELECT id FROM users WHERE active = 1
);
这样的写法易读性强,但在大数据量场景下效率可能较低。
在多数情况下,JOIN 会比 IN 效率更高,且更利于索引优化:
SELECT o.*
FROM orders o
INNER JOIN users u ON o.user_id = u.id
WHERE u.active = 1;
JOIN 方式通常更高效,也更符合规范最佳实践。
对于逻辑类似查询,可以使用 EXISTS,提高响应速度:
SELECT *
FROM fruits f
WHERE EXISTS (
SELECT 1
FROM selected_fruits sf
WHERE sf.name = f.name
);
EXISTS 会在第一条匹配时即停止查找,效率更高。([CSDN][4])
排除特定值常见方式:
SELECT *
FROM books
WHERE pub_id NOT IN (
SELECT id FROM publishers
);
⚠️ 要注意:如果列表中存在 NULL,NOT IN 会导致所有行被排除!推荐使用 NOT EXISTS 或左连接判断 NULL。([w3resource][2])
| 方法 | 建议 |
|---|---|
| 静态列表 IN | 适用于少量静态值 |
| 子查询 IN | 小表查询 OK,若大表需注意性能 |
| JOIN | 推荐优先使用,可利用索引 |
| EXISTS | 推荐替代 IN,特别是大表匹配 |
| NOT IN | 避免 NULL,推荐替代方案 |
并且务必结合 EXPLAIN 分析执行计划与索引扫描情况来调整查询结构。([w3resource][2], [博客园][5])
尽管你可能这样写:
SELECT *
FROM order_info
WHERE user_id IN (
SELECT user_id
FROM order_info
WHERE datediff(date, '2025-10-15')>0
AND product_name IN ('C++','Java','Python')
AND status='completed'
GROUP BY user_id
HAVING COUNT(id)>1
);
用窗口函数 + EXISTS 的方式更优雅高效:
SELECT t1.*
FROM (
SELECT *, COUNT(id) OVER(PARTITION BY user_id) AS cnt
FROM order_info
WHERE datediff(date, '2025-10-15')>0
AND product_name IN ('C++','Java','Python')
AND status='completed'
) t1
WHERE t1.cnt > 1
ORDER BY t1.id;
EXPLAIN 分析执行效率EXPLAIN 使用技巧 ([w3resource][2], [CSDN][4], [博客园][7])通过本篇文章,你将系统掌握 MySQL 中 IN 查询的多种方式,并能灵活选择适用场景,避免性能问题,真正做到原创新颖而又独具深度。如果你喜欢这样的教程,欢迎点赞收藏,再来一起交流学习!







