2016-12-10 11 views
1

私は正確に同じスキーマを持ついくつかのテーブルを持っています。 私はIDを持つテーブルを確認してその行を照会する方法

select * from 
(select * from ptable p1 
union select * from ptable2 p2 
.. and so on) pp 
where pid=1234 

を行うのであれば、それは本当に長い時間がかかります。

ptable(s)が1234であるかどうかチェックします。存在する場合は、右側の表から行を選択します。 どうすればいいですか? pidは一意であり、1つのテーブルにのみ存在しますが、ソート順でもありません。

+0

また、 'SHOW CREATE TABLE [your_table_name]'と 'EXPLAIN [your_query]' –

答えて

1

私はいくつかの実験の後に自分の問題を解決することができますが、その最良の方法は素人だが動作するかどうかはわかりません。

CREATE PROCEDURE 'sproc'(IN pQryID INT) 
BEGIN 

select count(*) as count into @rowCountp1 from p1 where pid=pQryID; 
select count(*) as count into @rowCountp2 from p2 where pid=pQryID; 
.. and so on for other similar tables .. 

if @rowCountp1>0 THEN 
(SELECT * from p1 where pid=pQryID); 
elseif @rowCountp2>0 THEN 
(SELECT (from p2 where pid=pQryID); 
end if; 

END 
関連する問題