MySQL中使用UNION进行两表合并,去重导致效率低下,请问如何优化

MySQL中使用UNION进行两表合并,去重导致效率低下,请问如何优化,第1张

MySQL中使用UNION进行两表合并,去重导致效率低下,请问如何优化

mysql>explain select * from wp_options limit 1\G

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: wp_options

partitions: NULL

type: ALL

possible_keys: NULL

key: NULL

key_len: NULL

ref: NULL

rows: 136

filtered: 100.00

Extra: NULL

1 row in set, 1 warning (0.01 sec)

mysql>show session status like 'Handler_read%'

UNION 可以将多个 SELECT 查询语句结果合并成一个结果集,在MySQL 8.0 中又增添了一些新的功能,我们一起来看下。

举例如下:

使用 Union 组合查询时,只能使用一条 order by 子句对结果集进行排序,而且必须出现在最后一条出现的 SELECT 语句之后。因为 Union 不允许对于部分结果集进行排序,只能针对最终检索出来的结果集进行排序。

注意:由于在多表组合查询时候,可能表字段并不相同。所以在对于结果集排序的时候需要使用检索出来的共同字段。检索的字段 id 必须存在于结果集中。

举例如下:

举例如下:

在 MySQL 8.0 中,对 SELECT 和 UNION 的解析器规则被重构进而变得更加一致,且减少了重复。

与 MySQL 5.7 相比,某些语句可能需要重写:

https://dev.mysql.com/doc/refman/8.0/en/union.html


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7304080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存