动态 MySQL 表

Dynamic MySQLTable

这是我的情况。我的数据库中有 9 个 table,它们都有一个 c_no(整数)、一个 cl_no(整数)和一个状态(布尔值)。我需要知道创建动态 table 的最佳方法,该动态 table 清楚地显示 c_no、cl_no 以及 table 的来源,表示为数字。

困难的部分是让它对所有状态 1 具有反应性或动态性。假设有人更新了我们需要删除该记录的状态之一。此外,如果有人将 cl_no 之一更新为新的,我们需要将其插入 table 并且如果 cl_no 的 c_no 不再存在从原点 table 我们也需要将其删除。基本上我们需要一个最新的 table 来整合所有信息。

示例:

Table_One

c_no、cl_no、状态

1,1,1

1,2,1

1,1,1

1,1,1

1,1,0

Table_Two

c_no、cl_no、状态

1,10,1

1,3,1

1,32,1

1,1,0

Desired_Table

c_no,cl_no,ref_table

1,1,1

1,2,1

1,32,2

1,3,2

1,10,2

我试过以下的方法都没有成功,

1.) 创建一个 运行 在 50 秒以上的视图,我们需要它在 1 秒内 return 结果。使用 9 个连接,查询 运行 太长。

2.) 为每个 table 创建触发器,但是当导入或更新 10,000 条记录时,响应时间呈指数增长,在测试用例中超过 2 分钟。

抱歉格式不佳。提前感谢您的时间和帮助!!

select cno, clno, min(tno) from
( select cno, clno, 1 tno from tbl1 where status=1
  union all
  select cno, clno, 2 from tbl2 where status=1
  union all
  ...
) u group by cno,clno

我认为你在寻找工会声明。类似于

SELECT c_no, cl_no, 1 FROM Table_One WHERE status = 1
UNION ALL
SELECT c_no, cl_no, 1 FROM Table_Two WHERE status = 1

如果您随后将其粘贴到视图中,它将是动态的并且可以免费使用。这确实假设您不需要以任何方式删除或处理两个表之间的重复项。需要稍微更改查询以管理它。

你对 UNION 的另一个选择类似于

SELECT c_no, cl_no, table_id FROM ( SELECT c_no, cl_no, 1 as table_id, status FROM Table_One UNION ALL SELECT c_no, cl_no, 1 as table_id, status FROM Table_Two ) lookup WHERE status = 1

这些查询都没有经过测试,但应该会给您一些选择的想法

您最初的查询是什么?