MST

星途 面试题库

面试题:MySQL UNION查询优化的索引策略

假设有两个表A和B,结构相似,要使用UNION合并它们的查询结果。表A有字段id、name、age,表B有同样字段。现在查询性能较差,已知表A和表B的id字段上有索引,name字段无索引。你如何通过调整索引来优化UNION查询,阐述具体思路并给出可能的SQL语句。
23.2万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
  1. 优化思路
    • 由于UNION操作会合并两个表的结果集,并且id字段已有索引,而name字段无索引。在UNION查询中,如果涉及到对name字段的筛选、排序等操作,没有索引会导致全表扫描,从而影响性能。
    • 为了优化性能,可以在表A和表Bname字段上添加索引。这样在UNION查询中,如果有对name字段的操作,就可以利用索引快速定位数据,减少扫描的数据量,提升查询性能。
  2. 可能的SQL语句
    • 对于MySQL数据库
      -- 为表A的name字段添加索引
      CREATE INDEX idx_name_A ON A (name);
      -- 为表B的name字段添加索引
      CREATE INDEX idx_name_B ON B (name);
      
    • 对于Oracle数据库
      -- 为表A的name字段添加索引
      CREATE INDEX idx_name_A ON A (name);
      -- 为表B的name字段添加索引
      CREATE INDEX idx_name_B ON B (name);
      
    • 对于SQL Server数据库
      -- 为表A的name字段添加索引
      CREATE INDEX idx_name_A ON A (name);
      -- 为表B的name字段添加索引
      CREATE INDEX idx_name_B ON B (name);