zoukankan      html  css  js  c++  java
  • 数据库索引

    数据库索引概述
    一、数据库索引
    在数据库中,素引使数据库程序无须对整个表进行扫描,就可以在其中找到所有数据。
    数据库的索引是某个表中一列或者若于列值的集合,以及物理标识这些值的数据页的逻辑指针清单。
    二、索引的作用
    (1)设置了合适的索引之后,数据库利用各种快速的定位技术,能够加快查询速率,特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍。
    (2)可以降低数据库的1O成本,并且索引还可以降低数据库的排序成本。
    (3)通过创建唯一性索引保证数据表数据的唯一性,可以加快表与表之间的连接。
    (4)在使用分组和排序时,可大大减少分组和排序时间。
    三、索引的分类。
    (1)普通索引
    这是最基本的索引类型,而且没有唯一性之类的限制.
    (2)唯一性索引
    与普通索引基本相同,区别在于:索引列的所有值都只能出现一次,即必须唯一,但可为空。
    (3)主键,是一种特殊的唯一索引,必须指定为“PRIMARYKEY”,具有唯一性的同时不能为空。
    (4)全文索引
    MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的类型为FULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建。贴吧的文本内容,和一些小型的网站网页内容,存放在数据库中即为全文索引模式。
    (5)单列索引与多列素引
    索引可以是单列上创建的索引,也可以是多列上创建的索引。
    四、创建索引的原则依据
    1、表的主键、外键必须有索引。
    2、数量超过300行的表应该有索引。
    3、经常与其他表进行连接的表,在连接字段上应该建立索引。
    4、唯一性太差的字段不适合建立索引。
    5、更新太频繁的字段不适合创建索引
    6、经常出现在where字句中的字段,特别是大表的字段,应该建立索引。
    7、索引应该建在选择性高的字段上
    8、索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建立索引
    五、创建、查看、删除索引的方法。
    根据企业需求选择了合适的索引之后,可以使用CREATE INDEX创建素引,CREATE INDEX加上各个索引关键字便可创建各个类型的索引。

    1、创建普通索引
    格式:create index <索引的名字> ON 表名(字段);
    2、创建唯一性索引
    格式:create unique index <索引的名字> ON 表名(字段)
    3、创建主键索引
    格式:create table 表名 ([…], primary key(字段));
    alter table 表名 add primary key(字段);
    4、查看索引.
    格式:show index from 表名;
    show keys from 表名;
    5、删除索引
    格式:drop index <索引的名称> on 表名;
    alter table 表名 drop index <索引的名称>;
    alter table 表名 drop primary key;

    案例:
    [root@localhost ~]# mysql -uroot -p111111
    MariaDB [(none)]> create database imployee_salary charset utf8;
    MariaDB [(none)]> use imployee_salary
    MariaDB [imployee_salary]> create table IT_salary(岗位类别 char(20) not null,姓名 char(20) not null,年龄 int,员工ID int not null,学历 char(6),年限 int,薪资 int not null,primary key(员工ID));
    MariaDB [imployee_salary]> insert into IT_salary values('网络工程师','孙空武','27','011','本科','3','4800');
    MariaDB [imployee_salary]> insert into IT_salary values('windows工程师','蓝凌','19','012','中专','2','3500');;
    MariaDB [imployee_salary]> insert into IT_salary values('linux工程师','姜文','32','013','本科','8','15000');
    MariaDB [imployee_salary]> insert into IT_salary values('java软件工程师','关园','38','014','大专','10','16000');
    MariaDB [imployee_salary]> insert into IT_salary values('硬件驱动工程师','罗中昆','29','015','大专','9','16500');
    MariaDB [imployee_salary]> create index salary_index on IT_salary(薪资); //创建普通索引
    MariaDB [imployee_salary]> alter table IT_salary add primary key(员工ID); //创建主键索引
    MariaDB [imployee_salary]> create unique index salary_unique_index on IT_salary(姓名); //创建唯一性索引
    MariaDB [imployee_salary]> show index from IT_salary G; //查看索引
    MariaDB [imployee_salary]> drop index salary_index on IT_salary; //删除普通索引
    MariaDB [imployee_salary]> alter table IT_salary drop index salary_unique_index; //删除主键索引
    MariaDB [imployee_salary]> alter table IT_salary primary key; //删除主键索引

  • 相关阅读:
    LeetCode "Palindrome Partition II"
    LeetCode "Longest Substring Without Repeating Characters"
    LeetCode "Wildcard Matching"
    LeetCode "Best Time to Buy and Sell Stock II"
    LeetCodeEPI "Best Time to Buy and Sell Stock"
    LeetCode "Substring with Concatenation of All Words"
    LeetCode "Word Break II"
    LeetCode "Word Break"
    Some thoughts..
    LeetCode "Longest Valid Parentheses"
  • 原文地址:https://www.cnblogs.com/lyqlyqlyq/p/11673920.html
Copyright © 2011-2022 走看看