MySQL中INDEX和VIEW有什么区别

问题描述 投票:0回答:4

索引和视图哪个更快,索引和视图都用于优化目的,都在表的列上实现,所以任何人都解释一下哪个更快,两者之间有什么区别,以及我们使用视图和索引的场景。

mysql sql database view indexing
4个回答
24
投票

查看

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

索引

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

类比

假设在一家商店,假设您有多个货架。根据保存的物品对每个货架进行分类就像创建索引一样。因此,您会知道到底要在哪里寻找特定项目。这是索引。

在同一家商店中,您想了解多个数据,例如产品、库存、销售数据等作为综合报告,然后可以将其与视图进行比较。

希望这个类比能够解释何时必须使用视图以及何时必须使用索引!


5
投票

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

观点

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

  • 视图可以包含表的所有行或从表中选择行。可以从一个或多个表创建视图,这取决于创建视图的书面 SQL 查询。
  • 以用户或用户类别认为自然或直观的方式构建数据。
  • 限制对数据的访问,以便用户可以查看并(有时)准确修改他们需要的内容,而不再需要更多内容。
  • 汇总各种表格中的数据,可用于生成报告。

索引

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

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

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


1
投票

查看:

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

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

索引:

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

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


0
投票

**

  • 查看:

** 由查询创建的虚拟表。 不存储数据;相反,它会在每次访问时从现有表中提取数据。 用于简化复杂查询、增强安全性并提供特定的数据视角。 可以像常规表一样查询,但不能总是更新。

**

  • 索引:

** 提高数据检索速度的数据结构。 存储指向表中数据的指针,有助于加快涉及搜索或排序的查询。 用于提高性能,但会减慢写入操作(如 INSERT、UPDATE)。

© www.soinside.com 2019 - 2024. All rights reserved.