zoukankan      html  css  js  c++  java
  • 索引

     

    索引

    唯一索引: 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。

    可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引

    可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引

    普通索引: 基本的索引类型,没有唯一性的限制,允许为NULL值。

    可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引

    可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引

    全文索引: 是目前搜索引擎使用的一种关键技术。

    可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引
    使用CREATE INDEX命令创建

    CREATE INDEX index_name ON table_name (column_list);

    InnoDB存储引擎的默认索引实现为:B+树索引

    索引设计的原则

    1. 适合索引的列是出现在where子句中的列,或者连接子句中指定的列
    2. 基数较小的类,索引效果较差,没有必要在此列建立索引
    3. 使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间
    4. 不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。
    5. like 时如果使用通配符% 那么索引就不生效,如果需要,需要建立覆盖索引(https://blog.csdn.net/alex_xfboy/article/details/82789942)


    索引虽好,但也不是无限制的使用,最好符合一下几个原则

    1) 最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

    2)较频繁作为查询条件的字段才去创建索引

    3)更新频繁字段不适合创建索引

    4)若是不能有效区分数据的列不适合做索引列(如性别,男女未知,最多也就三种,区分度实在太低)

    5)尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。

    6)定义有外键的数据列一定要建立索引。

    7)对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。

    8)对于定义为text、image和bit的数据类型的列不要建立索引。

    删除索引

    根据索引名删除普通索引、唯一索引、全文索引:

    alter table 表名 drop KEY 索引名

    alter table user_index drop KEY name;

    删除主键索引:alter table 表名 drop primary key(因为主键只有一个)。

    这里值得注意的是,如果主键自增长,那么不能直接执行此操作(自增长依赖于主键索引):





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

     
  • 相关阅读:
    Programming Windows 第五版读书笔记 第三章 窗口和消息
    一个带游标的遍历数据的函数|数据库操作|软件开发
    递归删除一个文件夹下的所有文件c#代码
    杭州市市民卡办理点
    NTLDR is missing 的解决方法
    SQL Server中 将日期格式化.函数 CONVERT
    1.显示网页中的所有图片
    用sql函数获取中文字符串的全拼
    地柜便利一个文件夹下的所有文件|软件开发
    软件是什么
  • 原文地址:https://www.cnblogs.com/xuerong/p/15133403.html
Copyright © 2011-2022 走看看