MySQL中索引和视图的区别是什么

MySQL中索引和视图的区别是什么,mysql,sql,database,view,indexing,Mysql,Sql,Database,View,Indexing,索引和视图都用于优化目的,都是在表的列上实现的,所以任何一个都可以解释哪一个更快,它们之间的区别以及我们使用视图和索引的场景 查看 视图是一个逻辑表。它是逻辑存储数据的物理对象。视图只引用存储在基表中的数据 视图是一个逻辑实体。它是存储在系统表空间数据库中的SQL语句。视图的数据构建在临时表空间中由数据库引擎创建的表中 索引 索引是映射到数据物理地址的指针。因此,通过使用索引,数据操作变得更快 索引是一种性能调整方法,允许更快地检索记录。索引为索引列中出现的每个值创建一个条目 类比: 假

索引和视图都用于优化目的,都是在表的列上实现的,所以任何一个都可以解释哪一个更快,它们之间的区别以及我们使用视图和索引的场景

查看

  • 视图是一个逻辑表。它是逻辑存储数据的物理对象。视图只引用存储在基表中的数据
  • 视图是一个逻辑实体。它是存储在系统表空间数据库中的SQL语句。视图的数据构建在临时表空间中由数据库引擎创建的表中
索引

  • 索引是映射到数据物理地址的指针。因此,通过使用索引,数据操作变得更快
  • 索引是一种性能调整方法,允许更快地检索记录。索引为索引列中出现的每个值创建一个条目
类比

假设在一家商店里,假设你有多个货架。根据保存的项目对每个机架进行分类就像创建索引一样。因此,您将知道在何处查找特定项目。这是索引

在同一个车间中,您需要知道多个数据,例如,产品、库存、销售数据和其他数据,作为合并报表,然后可以将其与视图进行比较


希望这个类比能解释什么时候必须使用视图,什么时候必须使用索引

从SQL的角度来看,两者都是不同的东西

视图

视图只不过是一个SQL语句,它以关联的名称存储在数据库中。视图实际上是预定义SQL查询形式的表的组合。 视图是一种虚拟表,允许用户执行以下操作:

  • 视图可以包含表的所有行,也可以从表中选择行。可以从一个或多个表创建视图,这些表依赖于编写的SQL查询来创建视图
  • 以用户或用户类别认为自然或直观的方式构造数据
  • 限制对数据的访问,以便用户可以查看和(有时)修改他们所需的内容,而不再需要
  • 汇总可用于生成报告的各种表中的数据
索引

而索引是数据库搜索引擎可以用来加速数据检索的特殊查找表。简单地说,索引是指向表中数据的指针。数据库中的索引与书籍后面的索引非常相似

例如,如果要引用某本书中讨论某个主题的所有页面,请首先引用索引,该索引按字母顺序列出所有主题,然后引用一个或多个特定页码

索引有助于加快SELECT查询和WHERE子句,但使用UPDATE和INSERT语句会减慢数据输入。可以创建或删除索引,对数据没有影响。

查看:

1) 视图也是数据库对象之一。 视图包含基表的逻辑数据。其中基表包含实际数据(物理数据)。另一种方式是,我们可以说视图就像一个窗口,通过它可以查看或更改表中的数据

2) 它只是一个带有对象名的存储SQL语句。它可以在任何SELECT语句(如表)中使用

索引:

1) 将在列上创建索引。通过使用索引,可以快速获取行


2) 这是一种基于一列或多列对表信息进行编目的方法。一个表可以包含一个或多个索引。索引类似于具有ROWID和索引列(有序)的二维结构。当基于此列(WHERE子句中使用的列)检索表数据时,此索引自动进入图片,其指针搜索所需的rowid。这些ROWID现在与实际表的ROWID匹配,并显示表中的记录。

它们完全不同。视图只是简化子查询的一种方式。索引用于优化匹配列数据。