数据库索引创建,查询

索引的详解

索引的创建

    主键索引的创建

            主键索引的创建有两种方式,

                    1 在创建表的时候, 直接在指定列或者某几列为主键

                   create table aaa(id int primary key , name varchar(32))

                    2添加表后, 对指定列创建索引

                    ALTER TABLE 表名 ADD PRIMARY KEY(列名1,列名2.....)

            主键索引的特点:

                1) 一个表最多只能有一个主键

                2) 一个主键可以指向多列(复合主键)

                3) 主键效率是最高, 我们给Id

                4) 主键索引的列不能重复, 也不能为null

      唯一索引的创建:

       

            1.创建表的时候,添加唯一索引

                create table aaa (id int primary key, name varchar(32), email varchar(64) unique)

            2.创建表后,添加

                create unique index uni_email on aaa(email);  uni_email代表索引名称 aaa代表表名 email 为列名

                alter table aaa add unique(email);

             唯一索引的特点:

                1.一张表中可以有多个唯一索引

                2.唯一索引数据不能重复,除了null 注意:不能是' ',因为一个是分配空间的

                3.什么时候使用唯一索引, 当某列数据不会重复, 才能使用

                4.唯一索引的效率也很高, 可以考虑优先使用

        普通索引的创建:(太简单了略过)

多列索引:
 ALTER TABLE people ADD INDEX lname_fname_age (lame,fname,age);
为了提高搜索效率,我们需要考虑运用多列索引,由于索引文件以B-Tree格式保存,所以我们不用扫描任何记录,即可得到最终结果。
注:在mysql中执行查询时,只能使用一个索引,如果我们在lname,fname,age上分别建索引,执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。

3.最左前缀:顾名思义,就是最左优先,上例中我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,fname,age)组合索引。


注:在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。

                

索引的查询

    1 desc 表名

    2 show keys from 表名 \G

    3 show indexs from 表名 \G

索引的修改

索引的删除











你可能感兴趣的:(MySQL,数据库)