MySQL的使用索引必要性,索引类型有哪些?,对数据库的性能有什么影响?

1、MySQL数据存储在哪里?

磁盘

现在查询速度比较慢,一般卡在IO(读写)上,input和output上;所以现在买电脑要加SSD(固态硬盘),SSD比机械硬盘读写速度快,这是硬件层面的,我们要做的是提升软件层面的IO速度;

2、而怎么提高IO效率呢?

1)、减少IO次数

2)、减少IO的数据量

所以要在满足需求的情况下(需要多少字段、多少列都不能少),尽可能减少数读写次数和数据量

磁盘预读:内存和磁盘在进行交互的时候,一般都有一个最小的逻辑单元:称之为“页”(就是数据库锁中“页锁”加的地方):dataPage;页由操作系统决定多大(32位或64位),一般是4kb或8kb,而我们在进行数据交互时,我们可以取页的整数倍来进行读取。

怎么理解呢?你新建一个记事本,写入1000个字节的字符,你去右键查看,大小却占用了4kb,不是准确的1000个字节的大小。

innodb存储引擎每次读取16kb的数据(每页16kb),因为这样方便

建立索引的目的是什么?

索引是帮助 MySQL 高效获取数据的数据结构。

索引存储在哪里?

磁盘,内存中也有索引,但是内存中的索引是从磁盘加载来的

为什么索引不直接存在内存里?避免断电等意外情况,而且当数据过大的时候,浪费时间;

索引类型:

普通索引:允许被索引的数据列包含重复的值

唯一索引:可以保证数据记录的唯一性


主键索引:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字primary key来创建


联合索引:索引可以覆盖多个数据列


全文索引:通过建立倒排索引,可以极大的提升检索效率,解决判断字段是否包含的问题,是目前搜索引擎使用的一种关键技术


索引可以极大地提高数据的查询速度
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
但是会降低插入、删除、更新表的速度,因为在执行这些写操作的时候,还要操作索引文件
索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要简历聚簇索引,那么需要的空间就会更大,如果非聚簇索引很多,一旦聚簇索引改变,那么所有非聚簇索引都会跟着变
 

注:

创建普通索引的基本语法:CREATE INDEX indexName ON tableName(column_Name(length))

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

也可以创建表的时候直接指定

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

创建唯一索引:create unique index indexName on tableName(column_Name(length))

查询索引:show index in table_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值