gpt4 book ai didi

View 中的 MySQL Union

转载 作者:行者123 更新时间:2023-11-29 01:30:05 25 4
gpt4 key购买 nike

我有 2 个大表,product 和 product_variants。目前我正在使用 MySQL View ,因为我多次需要这个 SQL 语句。无法更改数据库结构。

产品:
编号 |大师 |伊恩 |名称 |价格...

产品变体:
编号 | PID(FK on Product.ID)|大师 |伊恩 |名称 |价格...

View my_view 包含这样的选择:

(SELECT * FROM `product`) UNION (SELECT * FROM `product_variants`)

当我现在做这样的查询时:

SELECT * FROM my_view WHERE EAN = '11110'

大约需要 0.5 到 1 秒。如果我通过将 where 添加到每个子查询来直接使用 View 的内容,它会非常快(~0,004 秒):

(SELECT * FROM `product` WHERE EAN = '11110') UNION (SELECT * FROM `product_variants` WHERE EAN = '11110')

如何在 View 中使用更快的方法?我需要更改为 MySQL 函数吗?

TIA马特

最佳答案

您可能会发现这篇文章很有帮助 - http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/

基本前提是 MySQL View 有助于编写简单的 SQL 而不是优化代码。

[The] VIEW is simply expanded as a macro or Temporary Table in which case VIEW is materialized to temporary tables (without indexes !)

没有索引 = 缓慢的选择查询。

关于 View 中的 MySQL Union,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783570/

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