当前位置: 首页 > 面试题库 >

MySQL中的嵌套视图有什么问题吗

百里锋
2023-03-14
问题内容

有一个视图引用另一种视图有什么问题吗?例如,说我有一个用户表

CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);

然后为了论证,一个视图仅显示所有用户

CREATE VIEW all_users AS SELECT * FROM users

然后是一个仅返回其 first_name*last_name 的视图 *

CREATE VIEW full_names AS SELECT first_name, last_name FROM all_users

将一个视图置于另一个视图是否存在性能问题?我们还假装这是最简单的示例,现实情况会更加复杂,但是将一个视图置于另一视图的基础上却具有相同的一般概念。


问题答案:

这取决于所使用的算法。TEMPTABLE可能非常昂贵,而MERGE应该与直接使用该表相同,因此不会造成任何损失。



 类似资料:
  • 主要内容:视图的优点MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。 数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中

  • 我有一个垂直的viewpager在一个水平的viewpager。在horzontal viewpager I的第二个片段中,添加了垂直viewpager。垂直viewpager包含有图像的片段,所以当片段对用户可见时,我必须开始动画图像,因为使用了setUserVisibleHint。但是当移动到水平viewpager的第二个片段时,不会调用垂直viewpager内部片段的setUserVisib

  • 我在控制igraph所做网络图中对象的大小时遇到问题。命令的文档说明: bbox::绘图的边界框。这必须是包含所需绘图宽度和高度的元组。默认打印宽度为600像素,高度为600像素 arrow_size:如果图形有方向,则边上箭头的大小(长度)相对于15像素 顶点大小:顶点的大小(以像素为单位) 据我所知,所有这些参数都代表像素数。因此,如果将它们全部乘以一个系数,我希望图像能够完全按照这个系数缩放

  • 我有一个奇怪的问题与和(与设计支持库22.2.0) 使用小于的内容,我应该有一个固定的内容。然而,尝试上下滚动内容,我可以得到内容被移位,再也不会出现在自己的位置上。 这里的代码:

  • 我有5个SQL表 存储 工作人员 部门 SOLD_Items staff_rating 我创建了一个视图,将这四个表连接在一起。最后一个表(staff_rating),我希望在接近项目被出售的时间(sold_items.date)获得视图行的rating列。我尝试了以下SQL查询,这些查询工作正常,但存在性能问题。 SQL查询1 SQL查询2 SQL查询%2比SQL查询%1快。但这两种方法都存在性

  • 最好的方法是什么?