mysql视图能不能创建索引

mysql视图能不能创建索引

mysql视图不能创建索引。视图是一种虚拟存在的表,并不实际存在于数据库中,它是没有实际行和列的(行和列的数据来自于定义视图的查询中所使用的表);而索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,因此视图中不能创建索引,没有主键,也不能使用触发器。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

mysql视图不能创建索引。

MySQL 视图(View)是一种虚拟存在的表,并不实际存在于数据库中,它是没有实际行和列的;行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。

数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。

而索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。本节将详细讲解索引的含义、作用和优缺点。

通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。

因此:索引由数据表中的一列或多列组合而成,而视图是一种虚拟存在的表,没有实际行和列的;进而mysql视图不能创建索引。

扩展知识:mysql视图

mysql视图本质上就是语句,当你调用视图的时候数据库管理系统会先去找视图中封装的语句,先执行生成视图的语句,再在视图的基础上进行查询

视图的优点

视图与表在本质上虽然不相同,但视图经过定义以后,结构形式和表一样,可以进行查询、修改、更新和删除等操作。同时,视图具有如下优点:

1) 定制用户数据,聚焦特定的数据

在实际的应用过程中,不同的用户可能对不同的数据有不同的要求。

例如,当数据库同时存在时,如学生基本信息表、课程表和教师信息表等多种表同时存在时,可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的视图,安排课程人员查看修改课程表和教师信息的视图,教师查看学生信息和课程信息表的视图。

2) 简化数据操作

在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。

3) 提高数据的安全性

视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。

4) 共享所需数据

通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。

5) 更改数据格式

通过使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。

6) 重用 SQL 语句

视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。

要注意区别视图和数据表的本质,即视图是基于真实表的一张虚拟的表,其数据来源均建立在真实表的基础上。

使用视图的时候,还应该注意以下几点:

  • 创建视图需要足够的访问权限。

  • 创建视图的数目没有限制。

  • 视图可以嵌套,即从其他视图中检索数据的查询来创建视图。

  • 视图不能索引,也不能有关联的触发器、默认值或规则。

  • 视图可以和表一起使用。

  • 视图不包含数据,所以每次使用视图时,都必须执行查询中所需的任何一个检索操作。如果用多个连接和过滤条件创建了复杂的视图或嵌套了视图,可能会发现系统运行性能下降得十分严重。因此,在部署大量视图应用时,应该进行系统测试。

关于“mysql视图能不能创建索引”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

文章标题:mysql视图能不能创建索引,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/26638

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月18日 下午10:37
下一篇 2022年9月18日 下午10:38

相关推荐

  • windows echarts如何安装

    echarts安装方法 1、 首先搜索找到ECharts官网,点击进入。 2、点击下载。 3、点进去之后就能看到在线定制,我们直接点进去。 4、点击进入之后就自己可以选择里面的形状图,在线制作最后生成echarts.min.js 5、点击下载后就会生成js,OK之后就会帮你下载好。 到此,关于“wi…

    2022年9月26日
    39300
  • windows edge浏览器广告如何关闭

    edge浏览器广告关闭方法: 1、打开浏览器,点击右上角的三个点选择“设置”。 2、点击左侧高级设置在右侧“网站设置”中关闭“使用Adobe flash player”(这会导致浏览器无法打开视频和小游戏,解决方法在下面)。 3、点击浏览器右上角的三个点,在“更多工具”选择“使用 Internet …

    2022年9月8日
    54900
  • SpringBoot依赖管理的特性是什么

    1.父依赖parent介绍 pom文件中含有父依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</arti…

    2022年9月21日
    33200
  • css如何实现箭头

    箭头 #curvedarrow { position: relative; width: 0; height: 0; border-top: 9px solid transparent; border-right: 9px solid red; transform: rotate(10deg);}#…

    2022年8月31日
    31400
  • mysql与oracle有没有区别

    mysql与oracle有区别:1、Oracle是一个对象关系数据库管理系统(ORDBMS),而MySQL是一个关系数据库管理系统(RDBMS);2、Oracle是闭源的(收费),MySQL是开源的(免费);3、Oracle是大型数据库,而MySQL是中小型数据库;4、Oracle可设置用户权限、访…

    2022年9月22日
    2.9K00
  • windows Office365excl表格冻结窗口在哪

    Office365excl表格冻结窗口位置: 1、首先打开office365,点击新建一个excel表格。 2、然后选中自己需要操作的表格进行编辑。 3、点击上方工具栏中的“视图”。 4、最后点击“冻结窗格”即可完成操作。 关于“windows Office365excl表格冻结窗口在哪”的内容就介…

    2022年9月20日
    43100
  • windows ToDesk退出了怎么继续登录

    ToDesk退出了继续登录的方法: 1、退出后,重新打开ToDesk,然后点击右上角的“立即登录” 2、在其中选择上一次的登录方法进行登录就可以继续使用了。 3、还可以点击左上角的密码登录,使用账号密码来登录。 4、登录完成后,在设备列表中就可以重新连接之前连接过的设备了。 到此,相信大家对“win…

    2022年9月21日
    63900
  • linux中的shell有没有系统函数

    今天分享文章“linux中的shell有没有系统函数”,主要从:1. 系统函数、2. 自定义函数等几个方面为大家介绍,希望能帮到您。 linux中的shell有系统函数;shell编程和其他编程语言一样有系统函数,同时也可以自定义函数,例如可以利用basename系统函数来获取文件名,语法为“bas…

    2022年6月29日
    36600
  • word怎么添加页码

    word加页码的方法: 1、说先进入word文档,然后点击菜单中的“插入”选项。 2、然后在下拉的菜单中选择”页码“选项。 3、然后就会出现页码的设置框,可以点击“格式”来进行编辑。 4、然后你就可以在数字格式的模式进行格式选择,然后点击确定。 5、当你全部设置完成之后可以直接点击确定来完成设置。 …

    2022年9月20日
    37900
  • css如何使用​禁用鼠标事件

    禁用鼠标事件 CSS3 新增的 pointer-events 让你能够禁用元素的鼠标事件,例如,一个连接如果设置了下面的样式就无法点击了。 .disabled { pointer-events: none; } 关于“css如何使用禁用鼠标事件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的…

    2022年9月1日
    41100
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部