zoukankan      html  css  js  c++  java
  • MySQL中索引的基础知识

    本文是关于MySQL中索引的基础知识。主要讲了索引的意义与原理、创建与删除的操作。并未涉及到索引的数据结构、高性能策略等。


    一、概述

    1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能。

    数据库在检索数据时,如果没有索引,则只能从第一条记录开始逐条查找,效率很低,添加索引可以明显提升效率。

    2.索引的原理:索引存储了数据库的表中的关键字的值。关键字是索引用来搜索数据的依据,可以是一列,也可以是几列,还可以是一列的开头部分(前缀索引)。

    需要查找某条记录时,先在索引中查找该记录关键字的值,然后根据匹配的索引记录找到对应的数据行。

    3.其他要点:

    (1)一个表可以创建多个索引;但由于索引文件存储在硬盘上,每次更新数据都会自动维护索引,从而对硬盘进行读写,所以不宜创

    建过多的索引。

    (2)查询索引时,可以查询整个关键字,也可以查询关键字中的部分列,还可以只查询某一列值的开头部分(前缀查找)。

    (3)创建主键约束、唯一性约束时,会自动创建主索引、唯一性索引,索引名和约束名相同,删除了索引也就是删除了约束;

    创建外键约束时,会自动创建一个普通索引,索引名和约束名相同。


    二、索引的创建

    1.关键字的选取原则:

    优先选择这些列作为关键字:

    • 离散度高的列。也就是说,选为关键字的列的值,重复越少越好。
    • 占用存储空间少、储存空间固定的列。比如,INT比CHAR更适合做关键字,CHAR比TEXT更适合做关键字。
    • 经常被WHERE、GROUP BY、ORDER BY所操作的列。因为创建索引的意义之一就是提高检索效率,而检索是通过SELECT语句实现的。因此,应将SELECT语句中常用的操作列优先选为关键字。、
    避免选取从不出现在WHERE子句中的列,和更新频繁的列

    2.创建索引
    (1)创建表时创建索引:
    CREATE TABLE 表名(
    列1 数据类型 约束条件,
    列2 数据类型 约束条件,
    ……
    其他约束条件,
    索引类型 INDEX 索引名(列名(长度))
    )引擎、字符集、校对方式设定;
    其中:
    • 索引类型:可省略,也可选择UNIQUE和FULLTEXT(全文索引:查询大字符串,只能建立在CHAR,VARCHAR,TEXT列上)
    • 长度:可省略,是用于前缀索引中,设定该列字符长度的
    (2)在已有表上创建索引:
    CREATE 索引类型 INDEX 索引名 ON 表名 (列名(长度));
    ALTER TABLE 表名 ADD 索引类型 INDEX 索引名(列名(长度));

    3.查看索引
    SHOW INDEX FROM 表名;
    SHOW KEYS FROM 表名;

    4.删除索引
    DROP INDEX 索引名 ON 表名;
  • 相关阅读:
    从针对接口编程到依赖注入
    DataRow 数组转化成DataTable
    Math 类的方法概要
    .net控件
    字符串反转
    DataTable
    Enabled设置为False时,前景色和背景色也不改变的TextBox 并居中
    C# 四舍五入 (解决四舍六入五成双的问题)
    查询最后一条数据
    C# toString()
  • 原文地址:https://www.cnblogs.com/cage666/p/7295392.html
Copyright © 2011-2022 走看看