MySQL的索引

索引的概念

        数据库索引

                是一个排序的列表,存储着索引值和这个值所对应的物理地址

                无需对整个表进行扫描,通过物理地址就可以找到所需数据

                是表中一列或者若干列值排序方法

                需要额外的磁盘空间

        索引的作用

                当数据库利用各种快速定位技术能够大大加速查询速率

                当表很大或查询涉及到多个表时,可以成千上万倍地提高查询速度

                可以降低数据库的io成本,并且还可以降低数据库的排序成本

                通过创建唯一性索引保证数据表数据的唯一性

                可以加快表与表之间的连接

                在使用分组和排序时,可大大减少分组和排序时间

        索引的分类

                普通索引

                        最基本的索引类型,没有唯一性之类的限制

                        创建普通索引的方式

#创建库
create database kgc;
#在库中创建kc65表
create table kgc.kc65 (id int, name varchar(255),age int);
#创建索引在kgc.kc65表中的id上面添加索引a1
create index a1 on kgc.kc65(id);
#创建索引在kgc.kc65的表中id上面添加索引a2
alter table kgc.kc65 add index a2 (id);
#创建表的时候创建索引
create table kgc.kc1 (id int, name varchar(255),age int,index a1(id));

        唯一索引

                与“普通索引”基本相同

                与普通索引的区别是索引列的所有值只能出现一次,即必须唯一

                创建索引的唯一方式

创建唯一索引
create unique index a3 on kgc.kc65(id);
创建唯一索引
alter table kgc.kc65 add unique a4(id);
创建唯一索引
create table kgc.kc2 (id int,name varchar(255),age int,unique a1(id));

                主键索引

                        是一种特殊的唯一索引,指定为“PRIMARY KEY”

                        一个表只能有一个主键,不允许有空值

                        创建主键索引的方式

CREATE TABLE `kc3` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) NOT NULL ,
    PRIMARY KEY (`id`)
);

        组合索引

                可以是单列上创建的索引,也可以是在多列上创建的索引

                最左原则,从左往右依次执行

                创建组合索引的方式

        全文索引

                 MySQL从3.23.23版开始支持全文索引和全文检索

                索引类型为FULLTEXT

                可以在CHAR,VARCHAR或者TEXT类型的列上创建

         创建索引的原则依据

                表的组件,外键必须有索引

                记录超过300行的表应该有索引

                经常与其他表连接的表,在连接字段上应该建立索引

                唯一性太差的字段不适合建立索引

                更新太频繁的字段不适合创建索引

                经常出现在where字句的字段,特别是大表的字段,应该建立索引

                索引应该在选择性高的字段上

                索引应该建在小的字段上,对于大的文本字段甚至超长字段不要建立索引

        查看索引

#查看索引
show index from kc65;
#删除索引
drop index a1 on kgc.kc65;

        事务的概念

                是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行

                是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小控制单元

                适用于多用户同时操作的数据库系统的场景。

                通过事务的整体性以保证数据的一致性。

        事物的ACID特点

                原子性(Atomicity)

                一致性(Consistency)

                隔离性(IsoIation)

                持久性(Durability)

        事物的控制方法

                手动对事物进行控制的方法

                        事务处理命令控制事务

                        begin:开始一个事务

                        commit:提交一个事务

                        rollback:回滚一个事务

                使用set命令进行控制

                        set autocommit=0:禁止自动提交

                        set autocommit=1:开始自动提交

 use kgc
 create table test (id int,name varchar(255),age int);
 insert into test values(1,"张三",18);

索引是优化数据库性能的重要工具,但需要根据具体的应用场景和数据特点来合理使用。 

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值