网站怎么做更好推广,海南人才网,wordpress设置权限设置,鹤壁市淇滨区建设局网站文章目录Normal 普通索引Unique 唯一索引Full Text 全文索引SPATIAL 空间索引btree索引和hash索引的区别在实际操作过程中#xff0c;应该选取表中哪些字段作为索引#xff1f;Normal 普通索引
表示普通索引#xff0c;大多数情况下都可以使用
Unique 唯一索引
表示唯一的…
文章目录Normal 普通索引Unique 唯一索引Full Text 全文索引SPATIAL 空间索引btree索引和hash索引的区别在实际操作过程中应该选取表中哪些字段作为索引Normal 普通索引
表示普通索引大多数情况下都可以使用
Unique 唯一索引
表示唯一的不允许重复的索引如果该字段信息保证不会重复例如身份证号用作索引时可设置为unique
约束唯一标识数据库表中的每一条记录即在单表中不能用每条记录是唯一的例如身份证就是唯一的Unique(要求列唯一)和Primary Key(primary key unique not null 列唯一)约束均为列或列集合中提供了唯一性的保证Primary Key是拥有自动定义的Unique约束但是每个表中可以有多个Unique约束但是只能有一个Primary Key约束。 mysql中创建Unique约束
Full Text 全文索引
表示全文收索在检索长文本的时候效果最好短文本建议使用Index,但是在检索的时候数据量比较大的时候现将数据放入一个没有全局索引的表中然后在用Create Index创建的Full Text索引要比先为一张表建立Full Text然后在写入数据要快的很多
FULLTEXT 用于搜索很长一篇文章的时候效果最好。用在比较短的文本如果就一两行字的普通的 INDEX 也可以。
SPATIAL 空间索引
空间索引是对空间数据类型的字段建立的索引MYSQL中的空间数据类型有4种分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列必须将其声明为NOT NULL空间索引只能在存储引擎为MYISAM的表中创建
btree索引和hash索引的区别
1、BTREEB树可以是多叉树 {主流使用} 2、HASHkey,value 这种方式对范围查询支持得不是很好
hash 索引结构的特殊性其检索效率非常高索引的检索可以一次定位不像B-Tree 索引需要从根节点到枝节点最后才能访问到页节点这样多次的IO访问所以 Hash 索引的查询效率要远高于 B-Tree 索引。 可 能很多人又有疑问了既然 Hash 索引的效率要比 B-Tree 高很多为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢任何事物都是有两面性的Hash 索引也一样虽然 Hash 索引效率高但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端主要有以下这些。
1Hash 索引仅仅能满足””,”IN”和””查询不能使用范围查询。
由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值所以它只能用于等值的过滤不能用于基于范围的过滤因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系并不能保证和Hash运算前完全一样。
2Hash 索引无法被用来避免数据的排序操作。
由于 Hash 索引中存放的是经过 Hash 计算之后的 Hash 值而且Hash值的大小关系并不一定和 Hash 运算前的键值完全一样所以数据库无法利用索引的数据来避免任何排序运算
3Hash 索引不能利用部分索引键查询。
对于组合索引Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值而不是单独计算 Hash 值所以通过组合索引的前面一个或几个索引键进行查询的时候Hash 索引也无法被利用。
4Hash 索引在任何时候都不能避免表扫描。
前面已经知道Hash 索引是将索引键通过 Hash 运算之后将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个 Hash 表中由于不同索引键存在相同 Hash 值所以即使取满足某个 Hash 键值的数据的记录条数也无法从 Hash 索引中直接完成查询还是要通过访问表中的实际数据进行相应的比较并得到相应的结果。
5Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
对于选择性比较低的索引键如果创建 Hash 索引那么将会存在大量记录指针信息存于同一个 Hash 值相关联。这样要定位某一条记录时就会非常麻烦会浪费多次表数据的访问而造成整体性能低下。
在实际操作过程中应该选取表中哪些字段作为索引
为了使索引的使用效率更高在创建索引时必须考虑在哪些字段上创建索引和创建什么类型的索引,有7大原则 1选择唯一性索引 2为经常需要排序、分组和联合操作的字段建立索引 3为常作为查询条件的字段建立索引 4限制索引的数目 5尽量使用数据量少的索引 6尽量使用前缀来索引 7删除不再使用或者很少使用的索引 8. 经常更新修改的字段不要建立索引针对mysql说因为字段更改同时索引就要重新建立排序而Orcale好像是有这样的机制字段值更改了它不立刻建立索引排序索引而是根据更改个数时间段去做平衡索引这件事的 9、不推荐在同一列建多个索引