• MySQL——如何设计和使用索引?


    对相关列使用索引是提高select操作性能最佳途径。

    索引的几种常用类型:

    • UNIQUE唯一索引
    • FULLTEXT全文本索引
    • SPATITL空间索引

    索引可以在创建表的时候同时创建,也可以随时增加新的索引,创建唯一索引的语法为:

    create tablestu(
        -> id int not null,
        -> username varchar(20),
        -> password varchar(20),
        -> unique index(id ASC)
        -> );
    
    

    也可以使用alter table的语法来增加索引,语法和create index类似

    alter table table_name index index_name( column )
    

    查看索引是否被使用

    explainselect * from table_name +查询条件;
    

    删除索引

    drop index index_name on table_name







    索引的设计原则

    索引设计可以遵循一些已经有的规则,创建索引的时候金量考虑符合这些原则,便于提升索引的使用效率,更高效率的使用索引。

    • 搜索的索引列,不一定是所要选择的列。最适合索引的列是出现在where子句中的列,或者连接自居中指定的列,而不是出现在select关键字后面的选择列表中的列。
    • 使用唯一索引。考虑某列中的值的分布,如果该列的区分度很大,比如用户名,很容易区分很多行,但是如果是性别,就很难区分出来。
    • 使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,只要有可能尽量这样做,例如,有一个CHAR(200)的列,如果在前10个或20个字符内多数值是唯一的,那么就不要对整个列进行索引,对前10个或者20个字符进行索引能够节省大量索引空间,会使查询更快。更重要的是,对于较短的键值,索引高速缓存中的块能容纳更多的键值。
    • 不要过度使用索引,不要以为索引越多越好,每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能,在修改表时,索引必须进行更新,有时候可能需要重构,因此索引越多,所花费的时间越长。

    小结

    索引用于快速找出某个列中有一特定值的行,如果不使用索引,MySQL必须从第一条记录开始读完整个表直到找到相关的行,表越大,所花费的时间越长,如果表中查询的列有一个索引,MySQL能够快速到达一个位置区搜索数据文件中的中间,不需要从头开始遍历。

    问题反馈

    在使用学习中有任何问题,请留言,或加入Android、Java开发技术交流群

    在这里插入图片描述

  • 相关阅读:
    [C#] 走进异步编程的世界
    [C#] C# 知识回顾
    [C#] 走进异步编程的世界
    [C#] 走进异步编程的世界
    [.Net] 手把手带你将自己打造的类库丢到 NuGet 上
    [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具
    [C#] Linq To Objects
    [C#] Linq To Objects
    T-SQL:毕业生出门需知系列(九)
    TortoiseGit:记住用户名和密码
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309476.html
Copyright © 2020-2023  润新知