gpt4 book ai didi

sql - MySQL View 如何工作?

转载 作者:IT老高 更新时间:2023-10-28 13:00:02 24 4
gpt4 key购买 nike

当我创建一个 View 时,我基本上是在创建一个新表,当它连接的其中一个表中的数据发生变化时,它将自动进行事务处理;对吗?

另外为什么我不能在我的 View 中使用子查询?

最佳答案

View 的工作原理类似于表格,但它不是表格。它永远不存在;它只是在您引用 View 名称时运行的准备好的 SQL 语句。即:

CREATE VIEW foo AS
SELECT * FROM bar

SELECT * FROM foo

...相当于运行:

SELECT x.* 
FROM (SELECT * FROM bar) x

MySQLDump 永远不会包含要插入到 View 中的行...

Also why can't I use subqueries in my view????

遗憾的是,这是(尽管有问题)设计的。 MySQL View 有许多限制,记录在案:http://dev.mysql.com/doc/refman/5.0/en/create-view.html

那么,如果它只是一个虚构的表/准备好的语句,这是否意味着它在理论上具有与普通表/查询相同(甚至更低)的性能?


没有。
一个表可以有关联的索引,这可以使数据检索更快(插入/更新需要一些成本)。一些数据库支持“物化” View ,即可以应用索引的 View - 鉴于有限的 View 功能(仅从 v5 开始,MySQL 不支持这不足为奇) IIRC,游戏很晚)。

由于 View 是派生表,因此 View 的性能仅与构建它的查询一样好。如果该查询很糟糕,性能问题只会滚雪球......也就是说,在查询 View 时 - 如果 WHERE 子句中的 View 列引用未包装在函数中(即:WHERE v.column LIKE .. ., not WHERE LOWER(t.column) LIKE ...),优化器可能会将条件(称为谓词)推送到原始查询 -让它更快。

关于sql - MySQL View 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878227/

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