• 数据库索引分类


    数据库索引

    作用:

    提高查询速度

    确保数据的唯一性

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

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

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

    分类:

    主键索引(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;
  • 相关阅读:
    Delphi中的进制转换
    delphi inttohex 整型到十六进制
    delphi将程序最小化至右下角
    sql server 本地复制订阅 实现数据库服务器 读写分离
    我在DBGridEh增加一栏复选框及对应操作的解决方案
    Application.CreateForm()和TForm.Create()创建的窗体有什么区别么?二者在使用上各有什么技巧?(50分)
    学用 TStringGrid [6]
    SQL Server中一些有用的日期sql语句
    MVC中的@Html.DisplayFor等方法如何控制日期的显示格式(转)
    ASP.NET MVC自定义AuthorizeAttribute篇知识点讲解—登录限制
  • 原文地址:https://www.cnblogs.com/morganlin/p/12078625.html
Copyright © 2020-2023  润新知