mysql有哪些数据库索引,MYSQL数据库索引类型都有哪些
来源:整理 编辑:黑码技术 2024-11-14 04:38:42
1,MYSQL数据库索引类型都有哪些
主要有这些:PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。
2,mysql索引类型有哪些
主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。普通索引:一个索引只包含一个列,一个表可以有多个单列索引;唯一索引:索引列的值必须唯一,但允许有空值;复合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并;聚簇索引:也可以称为主键索引,是一种数据存储方式,B+树结构,一张表只能有一个聚簇索引;非聚簇索引:顾名思义,不是聚簇索引。
3,mysql innodb 有哪些索引类型
1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理2、hash索引:a 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询b 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引c 只有Memory存储引擎显示支持hash索引3、FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)4、R-Tree索引(用于对GIS数据类型创建SPATIAL索引)mysql 5.6新特性------innodb-- innodb 增强 -- 更好的性能,扩展-- 多核cpu服务器上提高性能-- 提高线程调度:如分拆kernel mutex;flush操作从主线程分离;多个perge线程;大内存优化等-- 在数据文件扩展期间减少竞争-- 现在在非递归情况下死锁检测:死锁信息可以记录到 error 日志,方便分析-- 改进lru flushing-- 增加最大redo log大小:2 tb-- undo log到单独表空间-- 快速校验-- 更好的恢复-- dump和恢复 buffer pool-- 更好的可用性:新的information_schema(metrics,system和buffer pool信息)-- 全文本搜索(full-text search)-- 可变的page大小:4k,8k-- 更大的前缀索引:限制3072 bytes--------明确指出,innodb支持全文索引
4,mysql有哪些索引
从数据结构角度1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理2、hash索引:a 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询b 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引c 只有Memory存储引擎显示支持hash索引3、FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)4、R-Tree索引(用于对GIS数据类型创建SPATIAL索引)从物理存储角度1、聚集索引(clustered index)2、非聚集索引(non-clustered index)从逻辑角度1、主键索引:主键索引是一种特殊的唯一索引,不允许有空值2、普通索引或者单列索引3、多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合4、唯一索引或者非唯一索引5、空间索引:空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建CREATE TABLE table_name[col_name data type][unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]1、unique|fulltext|spatial为可选参数,分别表示唯一索引、全文索引和空间索引;2、index和key为同义词,两者作用相同,用来指定创建索引3、col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择;4、index_name指定索引的名称,为可选参数,如果不指定,MYSQL默认col_name为索引值;5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;6、asc或desc指定升序或降序的索引值存储
5,mysql聚集索引有哪些
索引的目的是提高你的查询速度,当然附带的后果就是会降低你的数据更新的性能,索引的创建依据一般都是根据你实际使用情况而定,也就是说你要用哪个或者那几个字段作为查询条件,就在这个字段或者这些字段上面建立索引,也就是所谓的单字段索引和复合字段索引,比如:select * from student where id = 1上面这种情况那自然就是在id上建立索引,复合索引以此类推,索引不是随意创建的,如果你用的上,那才能建立索引,如果用不上创建索引反而会降低你的数据库性能。从数据结构角度1、b+树索引(o(log(n))):关于b+树索引,可以参考 mysql索引背后的数据结构及算法原理2、hash索引:a 仅仅能满足"=","in"和"<=>"查询,不能使用范围查询b 其检索效率非常高,索引的检索可以一次定位,不像b-tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的io访问,所以 hash 索引的查询效率要远高于 b-tree 索引c 只有memory存储引擎显示支持hash索引3、fulltext索引(现在myisam和innodb引擎都支持了)4、r-tree索引(用于对gis数据类型创建spatial索引)从物理存储角度1、聚集索引(clustered index)2、非聚集索引(non-clustered index)从逻辑角度1、主键索引:主键索引是一种特殊的唯一索引,不允许有空值2、普通索引或者单列索引3、多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合4、唯一索引或者非唯一索引5、空间索引:空间索引是对空间数据类型的字段建立的索引,mysql中的空间数据类型有4种,分别是geometry、point、linestring、polygon。mysql使用spatial关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为not null,空间索引只能在存储引擎为myisam的表中创建create table table_name[col_name data type][unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]1、unique|fulltext|spatial为可选参数,分别表示唯一索引、全文索引和空间索引;2、index和key为同义词,两者作用相同,用来指定创建索引3、col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择;4、index_name指定索引的名称,为可选参数,如果不指定,mysql默认col_name为索引值;5、length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;6、asc或desc指定升序或降序的索引值存储
文章TAG:
mysql有哪些数据库索引 MYSQL数据库索引类型都有哪些