• MySQL索引、视图


    什么是索引

    汉语字典中的汉字按页存放,⼀般都有汉语拼音目录(索引)、偏旁部首目录等
    我们可以根据拼音或偏旁部首,快速查找某个字词

    理解索引

    首先:先假设有⼀张表,表的数据有10W条数据,其中有⼀条数据是name=’newdream‘,如果要拿这条数据的话需要些的sql是

    SELECT * FROM stu WHERE name= ’newdream'
    

    ⼀般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果在name字段上建立索引,那么mysql只需要扫描⼀⾏数据及为我们找到这条name=’newdream‘的数据,这样的情况下查询的速度会要提⾼很多

    索引关键字的选取原则

    索引的设计往往需要⼀定的技巧,掌握了这些技巧,可以确保索引能够⼤幅地提升数据检索效率,弥补索引在数据更新⽅面带来的缺陷。

    原则1:表的某个字段值离散度越⾼,该字段越适合选作索引的关键字。
    原则2:占用储存空间少的字段更适合选作索引的关键字。
    原则3:较频繁地作为where查询条件的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。
    原则4:更新频繁的字段不适合创建索引,不会出现在where⼦句中的字段不应该创建索引。
    原则5.最左前缀原则
    原则6.尽量使用前缀索引

    创建索引

    索引的种类:

    • 主索引、聚簇索引
    • 唯⼀性索引
    • 普通索引
    • 复合索引
    • 全⽂索引(fulltext)

    ⽅法⼀:创建表的同时创建索引

    create table 表名(	
    字段名1 数据类型 [约束条件],	
    …	
    [其他约束条件],	
    …	
    [ unique | fulltext ] index [索引名]	( 字段名 [(长度)] [ asc | desc ] )	
    ) engine=存储引擎类型 default charset=字符集类型
    
    create table book(	
    isbn char(20) primary key,	
    name char(100) not null,	
    brief_introduction text not null,	
    price decimal(6,2),	
    publish_time date not null,	
    unique index isbn_unique (isbn),	
    index name_index (name (20)),	
    fulltext index brief_fulltext
    (name,brief_introduction),	
    index complex_index	(price,publish_time)	
    )engine=MyISAM default charset=gbk;
    

    ⽅法⼆、在已有表上创建索引

    语法格式⼀:
    create [ unique | fulltext ] index 索引名 on 表名 ( 字段名 [(长度)] [ asc | desc ] )	
    
    语法格式⼆:
    alter table	表名 add [ unique | fulltext ] index 索引名
    ( 字段名 [(长度)] [ asc | desc ] )
    

    使用索引

    使用索引的语法格式如下。

    select studentid,score
    from score use index(index_stuid)		
    where studentid>=3;
    

    删除索引

    删除索引的语法格式如下。

    drop index 索引名 on 表名
    

    视图

    视图与表有很多相似的地⽅,视图也是由若⼲个字段以及若⼲条记录构成,视图也可以作为select语句的数据源。甚⾄在
    某些特定条件下,可以通过视图对表进⾏更新操作。

    视图中保存的仅仅是⼀条select语句,视图中的源数据都来自于数据库表,数据库表称为基本表或者基表,视图称为虚表。

    创建视图

    创建视图的语法格式如下。

    create view 视图名 [	(视图字段列表) ] as select语句
    

    视图的作用

    1.使操作变得简单
    2.避免数据冗余
    3.增强数据安全性
    4.提⾼数据的逻辑独立性

    删除视图

    如果某个视图不再使用,可以使用drop view语句将该视图删除,语法格式如下。

    drop view 视图名
  • 相关阅读:
    异常处理 Exception
    C#使用SQLite出错:无法加载 DLL“SQLite.Interop.dll”,找不到指定的模块
    NullableKey:解决Dictionary中键不能为null的问题 zt
    STSdb
    C# 如何获取某个类型或类型实例对象的大小
    CORREL
    C# 深复制
    mysql数据库创建函数过程
    mysql 数据库怎样快速的复制表以及表中的数据
    代码优化(一)
  • 原文地址:https://www.cnblogs.com/TD1900/p/12121798.html
Copyright © 2020-2023  润新知