暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL创建索引时,切记注意!!!

Adon编程 2021-04-12
1063

一、创建表时创建索引

创建表时可以创建索引,这种方式最简单、方便。


a、创建 students2 表,stu_num为主键索引,stu_name为唯一性索引(名为name_index),并在stu_address列上前五位字符创建索引(名为address_index)。

    mysql> create table if not exists students2(
    -> stu_num char(20) not null comment'学生学号',
    -> stu_name char(6) not null comment'学生姓名',
    -> stu_sex enum('男','女') default'男' comment'学生性别',
    -> stu_birthday date not null comment'学生出生日期',
    -> dep_num char(18) not null comment'院系编号',
    -> stu_address varchar(20) not null comment'学生家庭住址',
    -> stu_phone varchar(18) not null comment'学生联系电话',
    -> stu_photo blob comment'学生照片',
    -> primary key(stu_num),
    -> unique index name_index(stu_name),
    -> index address_index(stu_address(5)));


    二、用 create index 语句创建索引

    如果表已经创建好了,可以用 create index 语句建立索引。


    a、创建普通索引。

    为便于按地址查询,为 students 表的 stu_address 列上的前6个字符建立一个名为 address_index的升序索引。

      mysql> create index address_index on students(stu_address(6) ASC);


      为经常作为查询条件的字段建立索引。比如在students表中的 dep_num 字段创建一个名为 dep_num_index 普通索引。

        mysql> create index dep_num_index on students(dep_num);


        b、创建唯一性索引。

        像学生的姓名、专业名称、部门名称、商品名称等之类的字段,一般情况下可建立一个唯一性索引。


        在 course (课程表)中的 course_name 列上建立一个名为course_name_index的唯一性索引。

          mysql> create unique index course_name_index on course(course_name);


          在 teachers (教师表)中的 tea_name 列上建立一个名为 tea_name_index 的唯一性索引。

            mysql> create unique index tea_name_index on teachers(tea_name);


            c、创建多列索引。

            可以在一个索引的定义中包含多个列,中间用逗号隔开,但是它们要属于同一个表,这样的索引叫做多列索引(复合索引)。


            在achievement(成绩表)中的 stu_num 和 course_num 列上建立一个名为 stu_course_index 的复合索引。

              mysql> create index stu_course_index on achievement(stu_num,course_num);

              讨论:

              1、对于 char 和 varchar 列,只用该列的一部分就可以创建索引,创建索引时用 col_name(length) 语法,对前缀编制索引。前缀包括每列值的前 length 个字符。blob 和 text 列也可以编制索引,但是必须给出前缀长度。

              2、create index 不能创建主键索引,创建主键索引用 alter table ... add primary key()。

              3、索引名可以不写,若不写,默认与列名相同。


              三、用 alter table 语句创建索引

              在已经形成的表中可以用 alter table 语句创建索引。


              a、在teachers(教师信息表)中建立tea_num主键索引,建立tea_name和dep_num的复合索引,名为 tea_dep_index,加速表得检索速度。

                mysql> alter table teachers 
                -> add primary key(tea_num),
                -> add index tea_dep_index (tea_num,dep_num);


                b、在 departments(院系表)中的dep_num建立名为 dep_num_index唯一性索引。

                  mysql> alter table departments add unique index dep_num_index(dep_num);

                  文章转载自Adon编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论