欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL 关于索引那点事

程序员文章站 2022-07-26 20:19:49
索引 其实数据库中的数据是按页存放的其实索引也是按页存放的所以本质上索引也占硬盘空间(以最小的消耗,换取最大的利益) 索引是一种有效组合数据的方式!为快速查找到指定记录做铺垫 目的就是快速或者某个记录! 提高了数据库的检索速度!作用:大大提高数据库的检索速度改善数据库性能 MySQL索引存储类型分类 ......

索引

其实数据库中的数据是按页存放的
其实索引也是按页存放的
所以本质上索引也占硬盘空间(以最小的消耗,换取最大的利益)


索引是一种有效组合数据的方式!为快速查找到指定记录做铺垫

目的就是快速或者某个记录!
          提高了数据库的检索速度!
作用:
大大提高数据库的检索速度
改善数据库性能

MySQL索引存储类型分类
  01.B-树索引:InnoDB,MyISAM均支持
  02.哈希索引

其实索引是把双刃剑(利弊共存),如果使用不当,反而会降低索引性能

主键:加快检索数据/唯一标识

常用索引类型:
   01.普通索引:允许在定义为索引的列中 出现 重复值和空值!
   02.唯一索引:索引列不允许出现重复值,但是可以出现一个空值!
   03.主键索引:创建主键的时候,系统会默认创建一个主键索引!唯一!不能为空!
   04.复合索引:将我们的多个列组合起来!(name,sid)姓名和身份证号!
   05.全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!
   06.空间索引:对空间数据类型的列建立的索引

 

■按照下列标准选择建立索引的列
频繁搜索的列
经常用作查询选择的列
经常排序、分组的列
,经常用作连接的列(主键/外键)
■请不要使用下面的列创建索引
仅包含几个不同值的列
表中仅包含几行

 

Eg:

  

 --  查询指定表的索引
SHOW INDEX FROM student;
TABLE:索引所在的表
Non_unique:索引是否唯一   0:唯一  1:不唯一
key_name:索引名称
seq_in_index:该列在索引中的位置
column_name:定义所用的列名称
null:该列是否为空
index_type:索引类型    

--  给姓名增加 普通索引
CREATE  INDEX index_studentName 
ON student(studentName);
-- 给学生姓名和身份证号 增加 组合索引
CREATE INDEX index_name_sid
ON student(studentName,identityCard)

--  删除索引
DROP INDEX index_name_sid ON  student;
DROP  INDEX index_studentName ON  student;
 

 

--  创建索引的原则
  01.经常被查询的列
  02.经常用作选择的列
  03.经常排序,分组的列
  04.经常用作连接的列(主键/外键)
 

 
使用索引时的注意事项:
  01.查询时减少使用*返回全部的列,不要返回不需要的列!
  02.索引尽量要少,在字节数小的列上建立索引!
  03.where字句中有多个条件表达式的时候,包含索引的列要放在其他表达式之前!
  04.在order by的字句中避免使用表达式!