gpt4 book ai didi

mysql - 如何在MySQL中通过查询优化获得组合结果?

转载 作者:行者123 更新时间:2023-11-29 14:05:49 26 4
gpt4 key购买 nike

我有这样的表格,

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,则分页偏移量应该正常工作。请帮我解决这个问题。

更新

解释结果

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
id,
IF(act, t1.OpenDate, t1.CloseDate) as `date`,
IF(act, 'Open', 'Close') as `type`
FROM my_table t1
JOIN (SELECT 1 as act UNION SELECT 0) as _
JOIN my_table t2 USING (id);

关于mysql - 如何在MySQL中通过查询优化获得组合结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com