0

私はこれらのような名前のいくつかのテーブルを持っています:

table_2012_12
table_2012_10
table_2012_07

両方とも同じ構造です:

id
order_id
account_id

私はこれらのクエリを実行する必要があることを知っています:

SELECT * FROM table_2012_12 where id=1
SELECT * FROM table_2012_12 where id=5  
SELECT * FROM table_2012_10 where id=1
SELECT * FROM table_2012_07 where id=22

単一のクエリを使用するための(パフォーマンスの)最良の方法は何ですか?

4

3 に答える 3

1

UNIONオペレーターはそれを行います。参照:http ://dev.mysql.com/doc/refman/5.6/en/union.html

SELECT * FROM table_2012_12 where id=1
UNION ALL
SELECT * FROM table_2012_12 where id=5  
UNION ALL
SELECT * FROM table_2012_10 where id=1
UNION ALL
SELECT * FROM table_2012_07 where id=22

通常、書くだけでUNIONなく、UNION ALLUNIONクエリ結果を結合するだけでなく、重複する行を除外する効果があります。UNION ALLクエリ結果をマージし、すべての行を保持します。これははるかに効率的です

于 2012-10-21T08:01:43.310 に答える
1

この構造を考えると、最適化を行うことはできませんが、ユニオンクエリを実行することはできます。

SELECT * FROM table_2012_12 where id=1
UNION SELECT * FROM table_2012_12 where id=5  
UNION SELECT * FROM table_2012_10 where id=1
UNION SELECT * FROM table_2012_07 where id=22

UNION重複を自動的に削除します。

于 2012-10-21T08:02:15.823 に答える
1
SELECT * FROM table_2012_12 where id=1 OR  id=5
UNION ALL SELECT * FROM table_2012_10 where id=1
UNION ALL SELECT * FROM table_2012_07 where id=22
于 2012-10-21T08:05:19.443 に答える