`
wisfly
  • 浏览: 61195 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

转:mysql索引类型normal,unique,full text 及btree和hash索引方式的区别

 
阅读更多

mysql索引类型normal,unique,full text

 小伙伴们,我开了一家海淘护肤品淘宝店,搜索店铺“禾子蝶的海淘铺”,正品保证,欢迎进店选购哦。谢谢!

 

问题1: mysql索引类型normal,unique,full text的区别是什么?

normal:表示普通索引

unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique

full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。

详细信息参考:http://blog.sina.com.cn/s/blog_887d00920100wgf3.html

 

问题2: 在实际操作过程中,应该选取表中哪些字段作为索引?

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引,有7大原则:

1.选择唯一性索引
2.为经常需要排序、分组和联合操作的字段建立索引
3.为常作为查询条件的字段建立索引
4.限制索引的数目
5.尽量使用数据量少的索引
6.尽量使用前缀来索引
7.删除不再使用或者很少使用的索引

详细信息参考:http://blog.sina.com.cn/s/blog_887d00920100wgf1.html

 

进阶:

1. 理解Mysql索引与优化: http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html

2. mysql索引背后的数据结构与原理   http://dotnet.cnblogs.com/page/151329/

3. 索引采用的数据结构 B-Tree  http://kb.cnblogs.com/page/45712/

 

MySQL的btree索引和hash索引的区别

 
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引

可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引也一样,虽然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。

(1)Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。

由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样。

(2)Hash 索引无法被用来避免数据的排序操作

由于 Hash 索引中存放的是经过 Hash 计算之后的 Hash 值,而且Hash值的大小关系并不一定和 Hash 运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算;

(3)Hash 索引不能利用部分索引键查询。

对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用。

(4)Hash 索引在任何时候都不能避免表扫描。

前面已经知道,Hash 索引是将索引键通过 Hash 运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个 Hash 表中,由于不同索引键存在相同 Hash 值所以即使取满足某个 Hash 键值的数据的记录条数,也无法从 Hash 索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。

(5)Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。

对于选择性比较低的索引键,如果创建 Hash 索引,那么将会存在大量记录指针信息存于同一个 Hash 值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下

 小伙伴们,我开了一家海淘护肤品淘宝店,搜索店铺“禾子蝶的海淘铺”,正品保证,欢迎进店选购哦。谢谢!

 

 

分享到:
评论

相关推荐

    MySQL索引类型Normal、Unique和Full Text的讲解

    MySQL的索引类型有普通索引(normal),唯一索引(unique)和全文索引(full text),合理使用索引可大大提升数据库的查询效率,下面是三种类型的索引的介绍 normal:这是最基本的索引,它没有任何限制,MyIASM中默认的...

    索引类型FULLTEXT,HASH,BTREE,RTREE,索引优化1

    2、存储结构正如其名,这类索引的物理文件大多就是以BTree结构来存储的,但会有不同的存储引擎在使用BTree索引时,对存储结构稍作修改 2、Hash索引的弊端

    Mysql中的Btree与Hash索引比较

    主要介绍了Mysql中的Btree与Hash索引比较,本文起讲解了B-Tree 索引特征、Hash 索引特征等内容,需要的朋友可以参考下

    mysql面试题,MySQL中有几种索引类型,可以简单说说吗?

    MySQL中有几种索引类型,可以简单说说吗? FULLTEXT :即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引...

    btree索引.txt

    btree 索引btree 索引btree 索引

    MySQL数据库索引优化

    介绍BTree索引和Hash索引,详细介绍索引的优化策略等等 1.Btree索引和Hash索引 2.安装演示数据库 3.索引优化策略上 4.索引优化策略中 5.索引优化策略下

    Oracle-Btree索引.pptx

    Oracle-Btree索引,索引的ppt

    mysql 索引分类以及用途分析

    一、 MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或&lt;=&gt;的等式比较。 1、普通索引:create index on Tablename(列的列表) alter table TableName add index (列的列表) ...

    _MySQL_类型约束索引

    特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常...

    MySQL Hash索引和B-Tree索引的区别

    MySQL Hash索引和B-Tree索引的区别究竟在哪里呢?相信很多人都有这样的疑问,下文对两者的区别进行了详细的分析,需要的朋友可以参考下

    MySQL索引背后的数据结构及算法原理

    特别需要说明的是, MySQL支持诸多存储引擎,而各种存储引擎对 索引的支持也各不相同,因此MySQL数据库支 持多种索引类型,如BTree索引,哈希索引, 全文索引等等。为了避免混乱,本文将只关注 于BTree索引,因为这...

    mysql 索引详细介绍

    在mysql 中,索引可以分为两种类型 hash索引和 btree索引。  什么情况下可以用到B树索引?  1.全值匹配索引  比如: orderID=”123”  2.匹配最左前缀索引查询  比如:在userid 和 date字段上创建联合索引。 ...

    Mysql面试问题加答案50道题.docx

    MySQL中常用的索引类型包括BTree、Hash、Full-text等。 3. MySQL中的主键和唯一键有何不同? 一个表只能有一个主键,但可以有多个唯一键。主键可以是NULL值,但唯一键不能是。主键是自动递增的,但唯一键不是。 4...

    MySQL高级笔记.zip

    MySQL 高级 - 索引 - 优势和劣势 P5 day01-06. MySQL 高级 - 索引 - 数据结构 P6 day01-07. MySQL 高级 - 索引 - 数据结构 - BTREE P7 day01-08. MySQL 高级 - 索引 - 数据结构 - B+TREE P8 day01-09. MySQL 高级 -...

    MySQL 创建索引(Create Index)的方法和语法结构及例子

    CREATE INDEX Syntax CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON ... HASH | RTREE} 代码如下: — 创建无索引的表格 create table testNoPK ( id int not null, name varchar(10) ); — 创建

    详解mysql索引总结—-mysql索引类型以及创建

    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能...

    mysql高级笔记 P1 day01-02. MySQL 高级 - Linux上安装MySQL P2 day01-03. MyS

    MySQL 高级 - 索引 - 优势和劣势 P5 day01-06. MySQL 高级 - 索引 - 数据结构 P6 day01-07. MySQL 高级 - 索引 - 数据结构 - BTREE P7 day01-08. MySQL 高级 - 索引 - 数据结构 - B+TREE P8 day01-09. MySQL 高级 -...

    2023MYSQL面试题集锦.docx

    索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等, InnoDB存储引擎的默认索引实现为:B+树索引。对于哈希索引来说,底层的数据结构就是哈希表,因 此在绝大多数需求为单条...

    MySQL高级教程视频

    MySQL 高级 - 索引 - 优势和劣势.avi │ │ 06. MySQL 高级 - 索引 - 数据结构.avi │ │ 07. MySQL 高级 - 索引 - 数据结构 - BTREE.avi │ │ 08. MySQL 高级 - 索引 - 数据结构 - B+TREE.avi │ │ 09. MySQL ...

Global site tag (gtag.js) - Google Analytics