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

nas上建设网站怎么找拉新推广平台

nas上建设网站,怎么找拉新推广平台,兰州网站备案谁家做,wordpress怎样修改备案号这里写目录标题 **1. 创建表和索引****2. 编写 UNION 查询****3. 使用 EXPLAIN 分析查询****4. 分析 EXPLAIN 结果****可能的结果分析**: **5. 验证索引合并****总结****1. UNION 操作的分析****为什么使用临时表?** 2. OR 条件的分析为什么使用索引合并…

这里写目录标题

      • **1. 创建表和索引**
      • **2. 编写 `UNION` 查询**
      • **3. 使用 `EXPLAIN` 分析查询**
      • **4. 分析 `EXPLAIN` 结果**
        • **可能的结果分析**:
      • **5. 验证索引合并**
      • **总结**
      • **1. `UNION` 操作的分析**
        • **为什么使用临时表?**
      • 2. `OR` 条件的分析
        • 为什么使用索引合并?
      • 3. `UNION` 和 `OR` 的区别
      • **总结**

在 MySQL 中, UNION 操作通常用于合并两个查询的结果集。为了测试 UNION 操作是否会使用索引合并(Index Merge)功能,还是仅使用单列索引,可以按照以下步骤进行测试和分析。


1. 创建表和索引

根据表结构,为 phoneemail 列创建单列索引:

CREATE INDEX idx_phone ON tb_user(phone);
CREATE INDEX idx_email ON tb_user(email);

2. 编写 UNION 查询

编写一个 UNION 查询,分别基于 phoneemail 列进行查询:

SELECT * FROM tb_user WHERE phone = '12345678901'
UNION
SELECT * FROM tb_user WHERE email = 'example@example.com';

3. 使用 EXPLAIN 分析查询

使用 EXPLAIN 命令查看查询的执行计划,判断是否使用了索引合并功能:

EXPLAIN
SELECT * FROM tb_user WHERE phone = '12345678901'
UNION
SELECT * FROM tb_user WHERE email = 'example@example.com';

4. 分析 EXPLAIN 结果

EXPLAIN 的输出中,重点关注以下字段:

  • type:访问类型,ref 表示使用了索引。
  • key:使用的索引名称。
  • Extra:额外信息,如果出现 Using unionUsing index merge,则表示使用了索引合并。
可能的结果分析
  1. 仅使用单列索引

    • 每个子查询的 typerefkeyidx_phoneidx_email
    • Extra 中没有 Using index merge
    • 说明每个子查询分别使用了 phoneemail 的单列索引。
  2. 使用了索引合并

    • typeindex_merge
    • key 可能显示 idx_phone,idx_email
    • Extra 中显示 Using union(idx_phone,idx_email)
    • 说明 MySQL 使用了索引合并功能。

5. 验证索引合并

如果 EXPLAIN 结果显示没有使用索引合并,可以尝试强制使用索引合并:

SELECT * FROM tb_user WHERE phone = '12345678901' OR email = 'example@example.com';

然后再次使用 EXPLAIN 分析:

EXPLAIN
SELECT * FROM tb_user WHERE phone = '12345678901' OR email = 'example@example.com';

观察是否使用了索引合并。
type:index_merge
在这里插入图片描述


总结

  • 使用 EXPLAIN 分析查询计划。
  • 如果 EXPLAINExtra 字段显示 Using index merge,则使用了索引合并功能。
  • 如果每个子查询分别使用了单列索引,则说明没有使用索引合并。

通过以上方法,可以测试并判断 UNION 操作是否使用了索引合并功能。

实操之后

mysql> EXPLAIN
-> SELECT * FROM tb_user WHERE phone = '12345678901'
-> UNION
-> SELECT * FROM tb_user WHERE email = 'example@example.com';
+----+--------------+------------+------------+------+---------------+-----------+---------+-------+------+----------+-----------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------+------------+------------+------+---------------+-----------+---------+-------+------+----------+-----------------+
| 1 | PRIMARY | tb_user | NULL | ref | idx_phone | idx_phone | 35 | const | 1 | 100.00 | NULL |
| 2 | UNION | tb_user | NULL | ref | idx_email | idx_email | 303 | const | 1 | 100.00 | NULL |
| NULL | UNION RESULT | <union1,2> | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary |
+----+--------------+------------+------------+------+---------------+-----------+---------+-------+------+----------+-----------------+

在这里插入图片描述

EXPLAIN 的结果可以看出,UNION 操作和 OR 条件的执行计划有所不同。以下是详细解释:


1. UNION 操作的分析

UNION 操作的执行计划分为三个部分:

  • 第一部分SELECT * FROM tb_user WHERE phone = '12345678901'
    • type: ref,表示使用了索引。
    • key: idx_phone,表示使用了 phone 列的单列索引。
    • Extra: 无额外信息。
  • 第二部分SELECT * FROM tb_user WHERE email = 'example@example.com'
    • type: ref,表示使用了索引。
    • key: idx_email,表示使用了 email 列的单列索引。
    • Extra: 无额外信息。
  • 第三部分UNION RESULT
    • type: ALL,表示需要扫描所有行。
    • Extra: Using temporary,表示使用了临时表来存储 UNION 的结果。
为什么使用临时表?

UNION 操作会将两个查询的结果集合并,并自动去除重复的行。为了实现这一点,MySQL 会将两个查询的结果存储在一个临时表中,然后对临时表进行去重操作。因此,UNION 操作通常会使用临时表。


2. OR 条件的分析

对于 OR 条件,MySQL 可能会使用索引合并(Index Merge)功能。例如:

EXPLAIN
SELECT * FROM tb_user WHERE phone = '12345678901' OR email = 'example@example.com';

执行计划可能如下:

  • type: index_merge,表示使用了索引合并。
  • key: idx_phone,idx_email,表示同时使用了 phoneemail 列的单列索引。
  • Extra: Using union(idx_phone,idx_email); Using where,表示 MySQL 使用了索引合并功能,并通过 WHERE 条件过滤结果。
为什么使用索引合并?

OR 条件需要同时满足两个条件中的任意一个。MySQL 会分别使用 phoneemail 列的单列索引,然后将结果合并(Using union),最后通过 WHERE 条件过滤结果。


3. UNIONOR 的区别

特性UNIONOR
结果集合并两个查询的结果,并去重合并两个条件的结果,不去重
索引使用分别使用单列索引可能使用索引合并(Index Merge)
临时表使用临时表存储结果不使用临时表
性能可能较慢,因为需要去重和临时表操作通常更快,因为不需要去重

总结

  • UNION
    • 分别使用单列索引。
    • 使用临时表存储结果并去重。
    • 适合需要合并并去重的场景。
  • OR
    • 可能使用索引合并(Using union)。
    • 不需要临时表,性能通常更好。
    • 适合需要同时满足多个条件的场景。

根据实际需求选择合适的查询方式。如果需要去重,使用 UNION;如果不需要去重,使用 OR

http://www.dtcms.com/wzjs/377591.html

相关文章:

  • 提供做网站公司有哪些今日热搜榜
  • 温州做网站 掌熊号网络运营培训哪里有学校
  • 网站建设实例教程重庆seo网站推广费用
  • 网站开发方向精准引流推广团队
  • 网站开发公司会在最后面加上公司优化排名工具
  • 怎么做售房网站成人培训班有哪些课程
  • c web网站开发权限window优化大师
  • 网站虚拟空间作用凡科建站官网免费注册
  • 深圳网站建设制作品牌公司网站推广的技巧
  • 模板网站制作时间seo快速排名工具
  • 什么是网站模板设计百度广告联盟平台的使用知识
  • 兴义做网站的seo查询网站是什么
  • WordPress文章分栏置顶百度seo推广怎么做
  • 长春做网站的公司有哪些百度问答库
  • 自己做键盘的网站免费永久注册顶级域名网站
  • 做医疗器械网站广州网络营销选择
  • 哪个网站做动图百度精准营销获客平台
  • wordpress 4.8zh关键词优化报价
  • 做国外网站关键词用写企业网站推广方法实验报告
  • 绿色学校网站模板百度账号申诉
  • 好的电商网站建设与维护意味着什么河南网站建设哪个公司做得好
  • 行业网站建设分析外链网站推荐几个
  • wordpress停止更新常州谷歌优化
  • 网站建设与管理难学吗百度url提交
  • 浙江做网站公司有哪些突发大事震惊全国
  • 张家口领先的网站建设服务商seo网络推广技术员招聘
  • 用vue做商城网站常用的js如何给企业做网络推广
  • 网上商城开发费用seo如何提高网站排名
  • 南宁网站提升排名如何创建一个网页
  • 一个外国人做的汉子 网站搜索推广