zoukankan      html  css  js  c++  java
  • mysql学习笔记-索引

    1、索引的作用

    • MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

        -- 打个比方,拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。

    • 索引的缺点是创建和维护索引需要耗费时间,会减慢写入速度

    2、增加索引(普通索引,唯一索引,多列索引)

    普通索引 -- 注意两种方法 表,列名,索引名的位子

    CREATE INDEX t_emptest_inx on t_emptest(empno); -- 创建索引;
    ALTER TABLE t_emptest ADD INDEX  t_emptest_inx(empno); -- 创建索引;

    唯一索引 unique index

    -- 唯一索引,与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
    CREATE UNIQUE INDEX  t_emptest_inx on t_emptest(empno); -- 创建索引;
    ALTER TABLE t_emptest ADD UNIQUE INDEX  t_emptest_inx(empno); -- 创建索引;

    多列索引  t_emptest(empno,ename)

    -- 组合索引,在创建组合索引时应该将最常用作限制条件的列放在最左边,依次递减。
    CREATE UNIQUE INDEX  t_emptest_inxm on t_emptest(empno,ename);

    3、查看索引-索引显示的各字段的含义

    SHOW INDEX FROM t_emptest; -- 查看索引

    查看各字段含义如下

    4、删除索引

    ALTER TABLE t_emptest DROP INDEX t_emptest_inx;  -- 删除索引;
    DROP INDEX t_emptest_inx ON t_emptest;           -- 删除索引;

    5、适合场景

    • 表的主键、外键必须有索引;外键是唯一的,而且经常查询
    • 数据量超过300的表应该有索引;
    • 经常与其他表进行连接的表,在连接字段上应该建立索引;经常连接查询,需要有索引
    • 经常出现在Where子句中的字段,加快判断速度,特别是大表的字段,应该建立索引,建立索引,一般用在select ……where f1 and f2 ,我们在f1或者f2上建立索引是没用的。只有两个使用联合索引才能有用
    • 经常用到排序的列上,因为索引已经排序。
    • 经常用在范围内搜索的列上创建索引,因为索引已经排序了,其指定的范围是连续的

    6、不适合场景

    • 对于那些在查询中很少使用或者参考的列不应该创建索引。这是因 为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
    • 对于那 些只有很少数据值的列也不应该增加索引。因为本来结果集合就是相当于全表查询了,所以没有必要。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比 例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
    • 对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
    • 修改性能远远大于检索性能时,不应该创建索 引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因 此,当修改性能远远大于检索性能时,不应该创建索引。
    • 不会出现在where条件中的字段不该建立索引。


    适用场景原文:https://blog.csdn.net/u012954706/article/details/81241049

  • 相关阅读:
    Heritrix 3.1.0 源码解析(二十五)
    Heritrix 3.1.0 源码解析(二十八)
    获取某年某月的第一天和最后一天的Sql Server函数
    C# ToString()用法汇总
    数据库隐式类型转换
    sql server 中 SET identity_insert on
    Linq To DataTable
    ASP.NET Session详解[转载]
    CSS overflow 属性
    HTML相对路径(Relative Path)和绝对路径(Absolute Path)
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/11165585.html
Copyright © 2011-2022 走看看