mysql索引创建

1. 创建语句

* create语句创建索引  
	create index indexName on tableName (columnName(length));
	
* alter语句创建索引   
	alter yable tableName add index indexName(columnName);
	
* 建表时创建索引 
	CREATE TABLE tableName(  
	  id INT NOT NULL,   
	  columnName  columnType,
	  INDEX [indexName] (columnName(length))  
	);

2. 索引类型

  • FULLTEXT(全文索引)
    全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。
    fulltext索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。(先查数据,再建索引,节省时间)
  • NORMAL(普通索引)
    普通索引是 MySQL 中最基本的索引类型,允许在定义索引的列中插入重复值和空值。
    关键字是 INDEX 或 KEY。
  • SPATIAL(空间索引)
    空间索引是对空间数据类型的字段建立的索引,使用 SPATIAL 关键字进行扩展。
    创建空间索引的列必须将其声明为 NOT NULL,空间索引只能在存储引擎为 MyISAM 的表中创建。
    空间索引主要用于地理空间数据类型 GEOMETRY。对于初学者来说,这类索引很少会用到。
  • UNIQUE(唯一索引)
    唯一索引与普通索引类似,不同的是创建唯一性索引的目的不是为了提高访问速度,而是为了避免数据出现重复。
    唯一索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一。
    创建唯一索引通常使用 UNIQUE 关键字。
  • 主键索引
    顾名思义,主键索引就是专门为主键字段创建的索引,也属于索引的一种。
    主键索引是一种特殊的唯一索引,不允许值重复或者值为空。
    创建主键索引通常使用 PRIMARY KEY 关键字。不能使用 CREATE INDEX 语句创建主键索引。

3. 索引方法

  • BTREE
    存储在B-Tree中的数据是有序的,BTREE是一种多路平衡查询树,所以他的节点是天然有序的(左子节点小于父节点、父节点小于右子节点),所以对于范围查询的时候不需要做全表扫描
  • HASH
    Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,多个数据在存储关系上是完全没有任何顺序关系的,所以,对于区间查询是无法直接通过索引查询的,就需要全表扫描。所以,哈希索引只适用于等值查询的场景
posted @ 2022-11-03 15:52  时光巷陌  阅读(467)  评论(0编辑  收藏  举报