mysql - 为什么在使用 "merge"等构造时不能使用 "group by"算法创建 MySql View ?

标签 mysql database view group-by

在 MySql 中有一个奇怪的规则,它基本上是说如果你想创建一个 View 并且你想在你的 View 中使用诸如 GROUP BY、DISTINCT、UNION 等结构,你不能使用 ALGORITHM = MERGE 创建您的 View !阅读更多 here .

这基本上意味着如果您在 MySql 中创建一个 View 并且您的 View 中有类似 GROUP BY 的东西,如果您运行如下查询:

select * from MyView
where foo = 2

然后 MySql 将从 MyView 中读取所有行并将其放入临时表中,然后它将 where 子句 (foo = 2) 应用于临时表并返回结果。

问题是,如果您的 View 有 1000 万行,它将获取所有 1000 万行,然后应用 where 子句,这是非常低效的。

那么,有人知道这背后的原理是什么吗?我知道 MS Sql Server 没有这样做,我敢打赌 Oracle 也没有这样做。

最佳答案

有人问了类似的问题on the MySQL forums关于工会的观点,多年前。一位 MySQL 开发人员同意使用 UNION 在 View 上实现 MERGE 算法应该很容易,但据我所知,它仍然没有实现!

关于mysql - 为什么在使用 "merge"等构造时不能使用 "group by"算法创建 MySql View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949038/

相关文章:

mysql - 如何在一对列上设置索引以便将值绑定(bind)在一起?

java - 如何将Oracle9i与JAVA或JSP集成?

iphone - 使用 NSFetchedResultsController 排序时如何忽略前缀 "A"和 "The"?

wpf - 刷新 ObjectDataProvider 时 View 丢失

java -/res/layout/main.xml描述的是一个View还是一个ViewGroup?

php - 按日期对结果进行排序和分组

php - jquery传递两个数组并插入到一张表的不同字段中

php - 为什么 SQLSTATE[HY000] : General error?

ruby-on-rails - 如何在 RoR 中向用户显示现有的 xml 文件

php - mySQL将数据单独存储在表中