mysql分别用数字INT和中文varchar做索引查询效率上差多少

mysql分别用数字INT和中文varchar做索引查询效率上差多少,第1张

性能相当,mysql中区别性能的是采用哪种索引方式,而不是索引的数据类型。

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

hash

索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像btree(b-tree)索引需要从根节点到枝节点,最后才能访问到页节点这样多次的io访问,所以

hash

索引的查询效率要远高于

btree(b-tree)

索引。

虽然

hash

索引效率高,但是

hash

索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。

(1)hash

索引仅仅能满足=,<=>,in,is

null或者is

not

null查询,不能使用范围查询。

由于

hash

索引比较的是进行

hash

运算之后的

hash

值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的

hash

算法处理之后的

hash

值的大小关系,并不能保证和hash运算前完全一样。

(2)hash

索引无法被用来避免数据的排序 *** 作。

由于

hash

索引中存放的是经过

hash

计算之后的

hash

值,而且hash值的大小关系并不一定和

hash

运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算;

PRIMARY, INDEX, UNIQUE 这3种是一类\x0d\x0aPRIMARY 主键。 就是 唯一 且 不能为空。\x0d\x0aINDEX 索引,普通的\x0d\x0aUNIQUE 唯一索引。 不允许有重复。\x0d\x0aFULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。\x0d\x0a\x0d\x0a举个例子来说,比如你在为某商场做一个会员卡的系统。\x0d\x0a这个系统有一个会员表\x0d\x0a有下列字段:\x0d\x0a会员编号 INT\x0d\x0a会员姓名 VARCHAR(10)\x0d\x0a会员身份z号码 VARCHAR(18)\x0d\x0a会员电话 VARCHAR(10)\x0d\x0a会员住址 VARCHAR(50)\x0d\x0a会员备注信息 TEXT\x0d\x0a\x0d\x0a那么这个 会员编号,作为主键,使用 PRIMARY\x0d\x0a会员姓名 如果要建索引的话,那么就是普通的 INDEX\x0d\x0a会员身份z号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)\x0d\x0a会员备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。\x0d\x0a\x0d\x0a不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。\x0d\x0a用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

MySQL全文索引 FULLTEXT索引和like的区别 fulltext ,其实是一个索引,like语句很难用索引,所以提升了效率。

fulltext ,支持多个字段检索。

搜索功能一般都用带有中文分词的开源产品,像xunsearch。

一般小项目用like就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7520316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存