视图和索引

  索引(Index)是影响数据性能的重要因素之一,设计高效的、合理的索引可以显著提高数据信息的查询速度和应用程序的性能。

  视图(View)是一个存储指定查询语句的虚拟表,视图中数据来源于由定义视图所引用的表,并且能够实现动态引用,即表中数据发生变化,视图中的数据随之变化

  理解索引

    MySQL的索引是为了加速对数据进行检索而创建的一种分散的、物理的数据结构。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据行的存储位置指针。

    索引是依赖于表建立的,提供了数据库中编排表中数据的内部方法。表的存储由两部分组成,一部分是表的数据页面,另一部分是索引页面。索引就存放在索引页面上

  索引的分类

  1. 普通索引
  2. 唯一索引
  3. 全文索引
  4. 单列索引
  5. 多列索引
  6. 空间索引      

  创建索引的方式

CREATE TABLE 表名(字段名 数据类型[完整性约束条件],
                     字段名 数据类型[完整性约束条件],
                     ......
         字段名 数据类型
        [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
                                     [别名] (字段名1 [(长度)]) [ASC|DESC])
                                   );

例: 在t1表中id字段上建立索引



视图使用索引失效怎么办 视图和索引的作用_mysql

例:创建一个表名为t2的表,在表中的id 字段上建立索引名为unique_id的唯一性索引,并且按照升序排序


视图使用索引失效怎么办 视图和索引的作用_mysql_02

例: 创建一个表名为t3的表,在表中的name字段上建立索引名为fulltext_name的全文索引


视图使用索引失效怎么办 视图和索引的作用_sql_03

例:创建一个表名为t4的表,在表中的name字段上建立索引名为single_name的单列索引


视图使用索引失效怎么办 视图和索引的作用_视图使用索引失效怎么办_04

例:创建一个表名为t6的表,在表中的id和name字段上建立索引名为multi的多列索引

视图使用索引失效怎么办 视图和索引的作用_数据库_05

CREATE [UNIQUE|FULLTEXT] INDEX 索引名
 ON 表名 (字段名 [(长度)] [ASC|DESC]);

在book表中的bookid字段上建立普通索引 


视图使用索引失效怎么办 视图和索引的作用_数据结构_06

在book表中的bookid字段上建立唯一性索引 


视图使用索引失效怎么办 视图和索引的作用_视图使用索引失效怎么办_07

在book表中的comment字段上建立单列索引 


视图使用索引失效怎么办 视图和索引的作用_视图使用索引失效怎么办_08

在book表中的authors和info字段上建立多列索引 


视图使用索引失效怎么办 视图和索引的作用_数据结构_09

ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT]  INDEX
                                    索引名 (字段名 [(长度)] [ASC|DESC]);

       在表中的bookid字段上创建普通索引



视图使用索引失效怎么办 视图和索引的作用_数据库_10


       在表中的bookid字段上创建唯一索引



视图使用索引失效怎么办 视图和索引的作用_数据结构_11


       在book表中的comment字段上建立单列索引



视图使用索引失效怎么办 视图和索引的作用_视图使用索引失效怎么办_12




视图使用索引失效怎么办 视图和索引的作用_数据库_13


  删除索引


ALTER TABLE 表名 DROP  primary  key;

    ALTER TABLE 表名 DROP INDEX 索引名;

    ALTER TABLE 表名 DROP FOREIGN KEY fk_symbol;

    DROP INDEX 索引名 ON 表名;


  视图

  创建视图


CREATE VIEW  view_name[(column_list)]
AS  SELECT_statement
[WITH  CHECK  OPTION]


  在student表上创建view_stu视图

    


视图使用索引失效怎么办 视图和索引的作用_mysql_14


   查看视图


DESCRIBE 视图名;
SHOW TABLE STATUS LIKE '视图名'
SHOW CREATE VIEW 视图名;


  修改视图


CREATE [OR REPLACE ]VIEW view_name [(column_list)]
AS SELECT_statement
[WITH CHECK OPTION]


  使用CREATE OR REPLACE VIEW 语句修改view_stu视图

  


视图使用索引失效怎么办 视图和索引的作用_视图使用索引失效怎么办_15


   使用ALTER语句修改视图

  


视图使用索引失效怎么办 视图和索引的作用_数据结构_16


   更新视图

    使用UPDATE语句更新视图

      


视图使用索引失效怎么办 视图和索引的作用_数据库_17