MySQL在(相同结构化的)多个表

时间:2017-01-26 08:24:30

标签: php mysql mysqli-multi-query multi-query

我在3个(结构相同)的表中有3列列的产品:id,date,requests。 在搜索特定产品ID时,我想在所有表格中进行搜索(我事先不知道哪个表格可以找到产品ID)

table1非常大(超过1亿行),目前我正在使用此查询创建一个临时表,用于执行其他查询。

CREATE TEMPORARY TABLE temp ENGINE=MEMORY 
as (select DISTINCT id, date, requests from table1 WHERE id='$id');

SELECT ... FROM temp

使用UNION合并3个表,然后由于table1的大小(超过1亿行)而查找id,因此这不是正确的方法。

我提出的最快的方法是(我会用PHP做到这一点):

search table1, if id found create temporary table, 
if id not found in table 1 then
search table2, if id found create temporary table, 
if id not found in table 2 then
search table3, if id found create temporary table, 
if id not found in table3 then return id not found. 

然而,这样我最终会执行多个查询(如果id位于表3中,那么将执行4个查询)。

使用MySQL有更好的方法吗?

增加:

这样的东西会起作用吗(这个的正确语法是什么,我在下面会发生错误)

CREATE TEMPORARY TABLE temp ENGINE=MEMORY 
as (
(select DISTINCT id, date, requests from table1 WHERE id='$id')
UNION
(select DISTINCT id, date, requests from table2 WHERE id='$id')
UNION
(select DISTINCT id, date, requests from table3 WHERE id='$id')
)

1 个答案:

答案 0 :(得分:0)

试试这个 SELECT * FROM information_schema.columns WHERE column_name = 'column_name';

SELECT table_name, column_name FROM information_schema.columns WHERE column_name = 'column_name';