私は次のようなテーブルを持っています、
id | OpenDate | CloseDate
------------------------------------------------
1 | 2013-01-16 07:30:48 | 2013-01-16 10:49:48
2 | 2013-01-16 08:30:00 | NULL
以下のように組み合わせた結果を得る必要がありました
id | date | type
---------------------------------
1 | 2013-01-16 07:30:48 | Open
1 | 2013-01-16 10:49:48 | Close
2 | 2013-01-16 08:30:00 | Open
上記の出力を取得するために UNION を使用しました (UNION なしで達成できますか?)
SELECT id,date,type FROM(
SELECT id,`OpenDate` as date, 'Open' as 'type' FROM my_table
UNION ALL
SELECT id,`CloseDate` as date, 'Close' as 'type' FROM my_table
)AS `tab` LIMIT 0,15
目的の出力を取得していますが、現在はパフォーマンス面で-> テーブルに 4000 レコードがあり、UNION を実行して約 8000 レコードを結合し、サイトの読み込みが非常に遅くなります (13 秒以上)。このクエリを最適化して出力を固定するにはどうすればよいですか?
サブクエリでも試しLIMIT
ましたが、サブクエリで使用すると、ページネーションオフセットが正しく機能しませんLIMIT
。これを解決するのを手伝ってください。
アップデート
EXPLAIN 結果
id select_type table type key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL 8858
2 DERIVED orders index OpenDate 4 NULL 4588 Using index
3 UNION orders index CloseDate 4 NULL 4588 Using index
NULL UNION RESULT<union2,3> ALL NULL NULL NULL NULL