【问题标题】:What is difference between INDEX and VIEW in MySQLMySQL中的INDEX和VIEW有什么区别
【发布时间】:2014-08-03 13:44:33
【问题描述】:

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

【问题讨论】:

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

标签: mysql sql database view indexing


【解决方案1】:

查看:

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

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

索引:

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

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

【讨论】:

    【解决方案2】:

    查看

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

    索引

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

    类比

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

    在同一家商店,你想知道多个数据,比如产品、库存、销售数据和东西作为一个综合报告,然后可以将它比作一个视图。

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

    【讨论】:

      【解决方案3】:

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

      观看次数

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

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

      索引

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-11
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        • 2017-08-09
        相关资源
        最近更新 更多