我在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')
)
答案 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';