zoukankan      html  css  js  c++  java
  • mysql索引的总结


    一、索引的作用
    用于快速找出某个列中有一定特定值得行。

    二、索引的类型
    1.普通索引:最基本的索引,没有任何限制。
    1)直接创建索引
    create index index_name on table(column(length))

    2).修改表结构的方式创建索引
    alter table table_name add index index_name on (clounm)

    3).创建表的同时创建索引
    create table 'table'{
    `id` int(11) not auto_increment,
    ......
    PRIMARY KEY (`id`)
    index index_name (title(length))
    }

    4)删除索引
    drop index index_name ON table

    2.唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
    1)创建唯一索引
    create unique index indeName no table(clounm(length))

    2)修改表结构
    alter table table_name add unique indeName on (column(length))

    3)创建表的时候直接指定
    create table table_name(
    `id` int(11) not null auto_increment,
    unique indeName (title(length))
    )

    3.主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引
    CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) NOT NULL ,
    PRIMARY KEY (`id`));

    4.组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合
    索引时遵循最左前缀集合。

    5.全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更
    像是一个搜索引擎,而不是简单的where语句的参数匹配。
    1)创建表的时候添加全文索引
    CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) CHARACTER NOT NULL ,
    `content` text CHARACTER NULL ,
    `time` int(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    FULLTEXT (content));

    2)修改表结构时添加全文索引
    alter table article add fulltext index_content(content)

    3)直接创建全文索引
    create fulltext index index_content on article(content)

    三、索引的缺点
    1.提高查询速度的同时,降低了更新表的速度;
    2.建立索引会占用磁盘空间的索引文件。

    四、使用索引应该注意的点:
    1.列的唯一性太小的(如性别、类型等)不适合建立索引;
    2.太长的列,可以选择只建立部分索引;
    3.更新比较频繁的数据不宜建立索引;
    4.不建议使用like语句,但“xxx%”禁止使用;
    5.不能再列上进行运算,这样会导致索引失效;
    6.不适用not in 和 <> 操作 

  • 相关阅读:
    Nacos配置失败(java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all server)
    数据库事务
    Consider defining a bean of type 'redis.clients.jedis.JedisPool' in your configuration.
    Mybatis+SpringBoot 项目All elements are null
    docker安装Sentinel
    docker安装nacos
    Docker 配置 Seata 集成 Nacos
    mybatis转义反斜杠_MyBatis Plus like模糊查询特殊字符_、、%
    在linux上配置Maven环境变量
    spring cache 学习——整合 redis 实现声明式缓存配置
  • 原文地址:https://www.cnblogs.com/kaka6k66k/p/12807711.html
Copyright © 2011-2022 走看看