-- 创建员工表
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
-- 创建部门表
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(100)
);</pre><p>二、连表查询</p><p>使用<code>JOIN</code> 来连接这两个表。</p><pre class="brush:sql;toolbar:false">
SELECT e.first_name, e.last_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;</pre><p>三、拆分单表查询</p><p>分别查询员工和部门的信息。</p><pre class="brush:sql;toolbar:false">
-- 查询员工信息
SELECT * FROM employees;
-- 查询部门信息
SELECT * FROM departments;</pre><p>四、性能测试</p><p>为了比较这两种查询方式的性能,我们可以使用<code>EXPLAIN</code> 语句来分析查询计划并获取执行时间。</p><pre class="brush:sql;toolbar:false">
-- 使用 JOIN 进行查询
EXPLAIN SELECT e.first_name, e.last_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
-- 分别查询员工和部门信息
EXPLAIN SELECT * FROM employees;
EXPLAIN SELECTFROM departments;</pre><p>通过以上步骤,你可以看到两种查询方式的执行计划和执行时间,通常情况下,<code>JOIN</code> 操作会比拆分单表进行查询更快,因为<code>JOIN</code> 可以利用索引来加速查询过程。</p><p><strong>连表查询</strong>使用<code>JOIN</code> 进行查询时,可以充分利用索引,提高查询效率。</p><p><strong>拆分单表查询</strong>:虽然这种方法可以避免使用索引,但可能会导致更多的查询操作,降低整体性能。</p><p>在实际应用中,应根据具体情况选择合适的方法,如果可能的话,尽量使用<code>JOIN</code> 进行查询,以获得最佳的性能。</p>