[英]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.