mysql全文索引FULLTEXT的哈希与BTREE方法对比
为什么【FULLTEXT】用【BTREE】?答案如下:
FULLTEXT:
全文搜索的索引。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
全文索引:
FULLTEXT(全文)索引,仅可用于MyISAM和InnoDB,针对较大的数据,生成全文索引非常的消耗时间和空间。对于文本的大对象,或者较大的CHAR类型的数据,如果使用普通索引,那么匹配文本前几个字符还是可行的,但是想要匹配文本中间的几个单词,那么就要使用LIKE %word%来匹配,这样需要很长的时间来处理,响应时间会大大增加,这种情况,就可使用时FULLTEXT索引了,在生成FULLTEXT索引时,会为文本生成一份单词的清单,在索引时及根据这个单词的清单来索引。FULLTEXT可以在创建表的时候创建,也可以在需要的时候用ALTER或者CREATE INDEX来添加:
//创建表的时候添加FULLTEXT索引
CTREATE TABLE my_table(id INT(10) PRIMARY KEY,name VARCHAR(10) NOT NULL,my_text TEXT,FULLTEXT(my_text)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
//创建表以后,在需要的时候添加FULLTEXT索引
ALTER TABLE my_table ADD FULLTEXT INDEX ft_index(column_name);
全文索引的查询也有自己特殊的语法,而不能使用LIKE %查询字符串%的模糊查询语法
SELECT * FROM table_name MATCH(ft_index) AGAINST('查询字符串');
对于较大的数据集,把数据添加到一个没有FULLTEXT索引的表,然后添加FULLTEXT索引的速度比把数据添加到一个已经有FULLTEXT索引的表快
哈希索引:
只有memory(内存)存储引擎支持哈希索引,哈希索引用索引列的值计算该值的hashCode,然后在hashCode相应的位置存执该值所在行数据的物理位置,因为使用散列算法,因此访问速度非常快,但是一个值只能对应一个hashCode,而且是散列的分布方式,因此哈希索引不支持【范围查找】和【排序】的功能。
BTree索引:
BTree是平衡搜索多叉树,设树的度为2d(d>1),高度为h,那么BTree要满足以一下条件:
每个叶子结点的高度一样,等于h;
每个非叶子结点由n-1个key和n个指针point组成,其中d<=n<=2d,key和point相互间隔,结点两端一定是key;
叶子结点指针都为null;
非叶子结点的key都是[key,data]二元组,其中key表示作为索引的键,data为键值所在行的数据;
在BTree的机构下,就可以使用二分查找的查找方式,查找复杂度为h*log(n),一般来说树的高度是很小的,一般为3左右,因此BTree是一个非常高效的查找结构。
希望能对大家有所帮助。
mysql全文索引FULLTEXT的哈希与BTREE方法对比相关推荐
- mysql 全文索引fulltext初始
MySQL使用全文索引(fulltext index) 1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上 ...
- mysql fulltext 分词_在mysql中使用全文索引fulltext|mysql,全文索引,fulltext
全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREAT ...
- MySQL全文索引怎么创建
mysql全文索引 很慢,速度不如like的百分之一 从explain开始说起吧,很显然第一个sql语句压根没用任何索引(key列内什么都没有)!第二个倒是用到索引,却是主键索引,并非你添加的full ...
- mysql text index_MySQL 全文索引(fulltext index)
1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也 ...
- mysql 某列加全文索引_MySQL使用全文索引(fulltext index)---高性能
转载地址:https://blog.csdn.net/u011734144/article/details/52817766/ 1.创建全文索引(FullText index) 旧版的MySQL的全文 ...
- mysql drop fulltext_MySQL使用全文索引(fulltext index)
1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也 ...
- MySQL使用全文索引(fulltext index)
1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也 ...
- MySQL使用全文索引(fulltext index) 及中文全文索引使用
全文索引介绍 1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上In ...
- mysql fulltext like_MySQL全文索引 FULLTEXT索引和like的区别
1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAIN ...
最新文章
- 重磅解读 | 赵义博:量子密码的绝对安全只存在于理论
- 科大星云诗社动态20210428
- Lua 语言中的点、冒号与self
- Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。...
- Linux Shell常用技巧(六) sort uniq tar split
- python中pass作用_总结python中pass的作用
- ionic slidebox 嵌套问题
- iPhone密码管理
- OpenCV入门系列 —— boxFilter盒子滤波
- Svelte入门——Web Components实现跨框架组件复用(二)
- 懂车帝视频连接--JS逆向
- Numpy库的下载及安装(吐血总结)
- 碰到spoolsv.exe-应用程序错误怎么办?
- cloudreve win10 解析域名_利用Cloudreve搭建自有网盘系统
- (附源码)springboot 网上作业管理系统 毕业设计 612317
- 阿里云服务器vCPU和CPU有区别吗?
- MICCAI 2022:使用自适应条形采样和双分支 Transformer 的 DA-Net
- 计算机主板上的电池作用,计算机主板上的纽扣电池到底用于什么用途?
- Jackson解析嵌套类问题(MismatchedInputException)
- 安卓通过SurfaceView类实现手写功能(下)
热门文章
- c++ string replace_Java——String类的常用方法总结
- pyecharts官方文档_中国疫情地图pyecharts
- 安卓开发 登录用户信息缓存_小程序云开发之用户注册登录
- 把程序显示在最前面 delphi_地球程序员之神:没上过大学,曾拒盖茨的Offer,4代码农靠他吃饭...
- espflashdownloadtool连接串口失败_关于串口下载问题和超时
- html-mailto
- postgresql后期给开发建表的权限问题
- eclipse连接Mysql和测试
- HBTS(HBOI) 2019 真实退役记
- 前后台传参类型、格式不同,解决思路