zoukankan      html  css  js  c++  java
  • MySQL中索引的分类和基本操作

    索引的作用:是用于快速定位实际数据位置的一种机制。

    索引在mysql中,是独立于数据的一种特殊的数据结构。

    一、索引的分类

    普通索引:利用特定的关键字,标识数据记录的位置(磁盘上的位置,盘号,柱面,扇面,磁道)。
    唯一索引:限制索引的关键字不能重复的索引。
    主键索引:限制索引的关键字不能重复,并且不能为NULL。(不能为NULL的唯一索引)。一个表中只允许有一个主索引。
    全文索引:索引的关键字,不是某个字段的值,而是字段值中有意义的词来作为关键字建立索引。
    复合索引:如果一个索引(以上四种任何都可以),是依赖于多个字段创建的化,称之为复合索引。

    一个myisam表的对应的三个文件:表结构文件.frm、数据文件.myd、索引文件.myi

    添加一个普通索引后,索引文件会变大

    二、索引的创建

    第一种方式:在创建表时,一块创建索引。

    第二种方式:建完表后,以alter方式建立索引。

    创建索引的注意事项:

    (1)较频繁的作为查询条件字段应该创建索引

    select * from emp where empno = 1

    (2)唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件。比如:is_best is_new is_hot is_sale is_delete

    select * from emp where sex = ''

    (3)更新非常频繁的字段不适合创建索引,比如登录的状态。

    select * from emp where logincount = 1

    (4)不会出现在WHERE子句中字段不该创建索

    三、索引的删除

    删除主键索引:alter table tablename drop primary key

    在删除主键索引时,要注意是否有auto_increment属性,如果有,则先要删除该属性,才能删除主键索引。

    删除其他索引:alter table tablename drop index 索引的名字

    注意:如果没有指定索引的名字则是使用该字段名称作为索引的名字的。

    四、索引的查看

    show indexes from table_name;
    
    show index from table_name;
    
    show create table table_name;
    
    show keys from table_name;
    
    desc table_name;
  • 相关阅读:
    小米笔试题:无序数组中最小的k个数
    搜狐畅游笔试题:1. 美丽的项链(动态规划) 2.多线程并发交替输出
    RPC系列:基本概念
    度小满面试题20190923
    Java 基础系列:异常
    JAVA基础系列:ThreadLocal
    leetcode 410. 分割数组的最大值(二分法)
    JAVA基础系列:Object类
    Redis系列1——概述
    剑指offer:对称的二叉树(镜像,递归,非递归DFS栈+BFS队列)
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522549.html
Copyright © 2011-2022 走看看