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

    数据库索引

    作用:

    提高查询速度

    确保数据的唯一性

    可以加速表和表之间的连接,实现表和表之间的参照完整性

    使用分组和排序子句进行数据检索时,可以减少分组和排序的时间

    全文检索字段进行搜索优化

    分类:

    主键索引(PRIMAY KEY)

    唯一索引(UNIQUE)

    常规索引(INDEX)

    全文索引(FULLTEXT)

    主键索引

    主键:

      某一个属性组能唯一标识的一条记录

      如:学生表(学号,姓名,班级,性别等等),学号是唯一标识的,可以作为主键

    特点:

      最常见的索引类型

      确保数据记录的唯一性

      确定特定数据记录在数据库中的位置

    实例:

    CREATE TABLE `表名`(、

      `GradeID` INT(11)  AUTO_INCREMENT PRIMARY KEY,

      #或 PRIMARY KEY(`GradeID`)

    唯一索引

    作用:

          避免同一个表中某数据列中的值重复

    与主键索引的区别

      主键索引只能有一个

      唯一索引可有多个

    实例:

    CREATE TABLE `Grade`(、

      `GradeID` INT(11)  AUTO_INCREMENT PRIMARY KEY,

      `GradeName` VARCHAR(32) NOT NULL UNIQUE

      #或 UNIQUE KEY ` GradeID`(`GradeID`)

    常规索引

    作用:

    快速定位特定数据

    注意:

    index 和 key 关键字都可以设置常规索引

    应加在查询条件的字段

    不易添加太多常规索引,影响数据的插入,删除和修改操作

    实例:

    ##创建表时添加

    CREATE TABLE `result`{

      //省略一些代码

      INDEX / KEY `ind` (`studentNo`,`subjectNo`)

    }

    ##创建后追加

    ALTER TABLE `result` ADD  INDEX `ind` (`studentNo`,`subjectNo`);

    全文索引

    作用:

    快速定位特定数据

    注意:

    只能用于MyISAM类型的数据表

    只能用于CHAR ,VARCHAR,TEXT数据列类型

    使用大型数据集

    实例:

    CREATE TABLE `student`(

      #省略一些sql语句

        FULLTEXT(`StudentName`)

    )ENDINE=MYISAM;

    ALTER TABLE employee ADD FULLTEXT(`first_name`)

    唯一索引补充:

    它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

    创建索引

    CREATE UNIQUE INDEX indexName ON mytable(username(length))

    修改表结构

    ALTER table mytable ADD UNIQUE [indexName] (username(length))

    创建表的时候直接指定

    CREATE TABLE mytable(  
     
    ID INT NOT NULL,   
     
    username VARCHAR(16) NOT NULL,  
     
    UNIQUE [indexName] (username(length))  
     
    );

    基本索引:

    这是最基本的索引,它没有任何限制。它有以下几种创建方式:

    CREATE INDEX indexName ON mytable(username(length));

    如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

    修改表结构(添加索引)

    ALTER table tableName ADD INDEX indexName(columnName)

    创建表的时候直接指定

    CREATE TABLE mytable(  
     
    ID INT NOT NULL,   
     
    username VARCHAR(16) NOT NULL,  
     
    INDEX [indexName] (username(length))  
     
    );

    删除索引的语法

    DROP INDEX [indexName] ON mytable;
  • 相关阅读:
    关于 未能加载文件或程序集“ImageMagickNet”或它的某一个依赖项。试图加载格式不正确的程序 的解决办法
    Nhibernate中 ManyToOne 中lazy="proxy" 延迟不起作用的原因
    关于mysqlconnectornet6.3.4 MySqlDataAdapter 在空数据的情况下填充DataSet后tables[0] 找不到的问题
    JavaScript:constructor属性
    关于AspNetPager 采用URL分页时 执行两次绑定的解决办法
    WPF学习笔记(一)
    unity3d 屏幕坐标、鼠标位置、视口坐标和绘制GUI时使用的坐标
    FileUpLoad用法(二)上传文件到服务器的数据库
    ASP.Net 使用GridView模板删除一行的用法
    ASP.Net FileUpLoad 控件的用法(一)——上传到服务器文件夹下
  • 原文地址:https://www.cnblogs.com/morganlin/p/12078625.html
Copyright © 2011-2022 走看看