动态 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
这些查询都没有经过测试,但应该会给您一些选择的想法
您最初的查询是什么?
这是我的情况。我的数据库中有 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
这些查询都没有经过测试,但应该会给您一些选择的想法
您最初的查询是什么?