簡體   English   中英

MySQL在(相同結構的)多個表中搜索ID

[英]MySQL search for id in (identically structured) multiple tables

我在3個(相同結構的)表中有3列的產品:ID,日期,請求。 當搜索特定的產品ID時,我想在所有表格中進行搜索(我不知道可以在哪個表格中找到產品ID)

table1非常大(超過1億行),目前我正在使用此查詢來創建一個臨時表,並使用該表執行其他查詢。

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

SELECT ... FROM temp

由於table1的大小(超過1億行),使用UNION合並3個表,然后查找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')
)

嘗試這個
SELECT * FROM information_schema.columns WHERE column_name = 'column_name';

要么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM