0
我有表像,如何在查询优化中获得MySQL组合结果?
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得到上面的输出(我们可以实现无工会吗?)
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条记录,并通过完成它的组合并给出大约8000条记录,这使得ve ry加载网站缓慢(超过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
你要限制行的量来选择? 'SELECT TOP 100'也许? – TheGeekZn
@NewAmbition否我想选择所有记录 –