Sql 数据库继承性能优化

Sql 数据库继承性能优化,sql,performance,inheritance,Sql,Performance,Inheritance,假设我有一个MySQL DB继承设计,如下所示: CREATE TABLE parent ( id INT PRIMARY KEY AUTO_INCREMENT, type ENUM('A', 'B') ); CREATE TABLE child_a ( parent_id INT PRIMARY KEY, a_val TEXT -- FK to parent table... ); CREATE TABLE child_b ( parent_id INT PRIM

假设我有一个MySQL DB继承设计,如下所示:

CREATE TABLE parent
(
  id INT PRIMARY KEY AUTO_INCREMENT,
  type ENUM('A', 'B')
);

CREATE TABLE child_a
(
  parent_id INT PRIMARY KEY,
  a_val TEXT
  -- FK to parent table...
); 

CREATE TABLE child_b
(
  parent_id INT PRIMARY KEY,
  b_val TEXT,
  -- FK to parent table...
);
然后使用以下查询:

SELECT * FROM parent p
JOIN child_a a ON p.type = 'A' AND a.parent_id = p.id
JOIN child_b b ON p.type = 'B' AND b.parent_id = p.id;

我的问题是:如果parent.type是“B”,那么在
连接中添加类型列检查作为第一个条件是否会阻止DB实际遍历子表的每一行?

应该这样做,但优化器有时是不可预测的。但我怀疑你会遇到一个不同的速度,如果你使用它或不很好,也许不是在这个简单的设计,但在我的实际应用中,有大量的儿童类型。如果遗产中有孙子孙女,那么这一点就更加重要了,以此类推。然后遍历每个表的行会产生指数级的效果。事实上,现在我考虑到了这一点,因为ID是索引的,所以我需要大量的子表和孙表才能注意到真正的性能提升