zoukankan      html  css  js  c++  java
  • 添加索引

    创建一个class的表, 注意:这里的引号不是英文引号

    CREATE TABLE `class` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(20) NOT NULL COMMENT '用户名',
    `sex` TINYINT(4) NOT NULL COMMENT '性别',
    `age` INT(4) NOT NULL COMMENT '年龄',
    `time` datetime(0) NULL DEFAULT NULL COMMENT '时间',
    `desc` VARCHAR(20) NOT NULL COMMENT '详情',
    PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic COMMENT '班级表';

    1主键索引

    主键索引一般在建表的时候添加,一般都是id,自动递增

    建立表后添加主键索引

    alter table 'class' add primary key (' id')

    特点:不能为空并且唯一

    2普通索引

    一张表中的普通索引可以有多个

    alter table 'class' add index  index_name (‘name’)

    index_name是索引名

    3唯一索引

    alter table 'class' add UNIQUE ('name')

    唯一索引和主键索引的区别

    唯一索引可以有多个null,但是数据内容不能重复

    主键索引不能为null,内容唯一

    4全文索引

    alter table 'class' add FULLTEXT ('name')

    全文索引主要针对于文本文件,比如标题文章

    5多字段索引

    alter table 'class' add  index index_name (`name`, `sex`, `desc` )

    6什么时候开始引用索引

    6.1频繁查询的字段,应该创建索引

    6.2更新非常频繁的字段,不应该创建索引

    6.3唯一性太差的字段,应该创建索引

    6.4不会出现在where条件之后的字段,不应该创建索引。

    7索引的使用情况

    7.1对于创建的多列索引,查询左边的索引的列,索引会被使用到,

    eg: alter table 'class' add  index index_name (`name`, `sex`, `desc` )

    select *  from class where name ='张三';会被使用到索引

    select * from class where desc='张三';不会用到索引

    7.2对于模糊查询,like '%张三'不会用到索引,like ‘张三%’会用到索引

    7.3如果条件中含有or,不会用到索引

  • 相关阅读:
    linux 网络性能优化
    select/poll/epoll原理探究及总结
    linux socket读数据错误解释
    linux 单机跨进程通信
    map与hash_map使用与对比
    python web自动化测试框架搭建(功能&接口)——环境搭建
    Jenkins构建触发器的区别
    python改变导入模块中的变量的问题
    Jmeter断言中判断请求失败的响应代码问题
    Jmeter中动态获取jsessionid来登录
  • 原文地址:https://www.cnblogs.com/zhushilai/p/13469760.html
Copyright © 2011-2022 走看看