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

作者:CODETC 时间:2024-01-20 09:56:19 

MySQL的索引类型有普通索引(normal),唯一索引(unique)和全文索引(full text),合理使用索引可大大提升数据库的查询效率,下面是三种类型的索引的介绍

normal:这是最基本的索引,它没有任何限制,MyIASM中默认的BTREE类型的索引,是我们大多数情况下用到的索引。

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

full text : 表示全文搜索的索引,仅可用于 MyISAM 表。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。

mysql索引类型Normal,Unique,Full Text区别

Normal:

表示普通索引,大多数情况下都可以使用

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然后在写入数据要快的很多

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

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

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

1.选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

2.为经常需要排序、分组和联合操作的字段建立索引

经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。

3.为常作为查询条件的字段建立索引

如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。

4.限制索引的数目

索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。

5.尽量使用数据量少的索引

如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。

6.尽量使用前缀来索引

如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

7.删除不再使用或者很少使用的索引

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。

注意:选择索引的最终目的是为了使查询的速度变快。上面给出的原则是最基本的准则,但不能拘泥于上面的准则。读者要在以后的学习和工作中进行不断的实践。根据应用的实际情况进行分析和判断,选择最合适的索引方式。

举个例子来说,比如你在为某商场做一个会员卡的系统。这个系统有一个会员表(大致字段如下):

会员编号   INT
会员姓名   VARCHAR(10)
会员身份证号码   VARCHAR(18)
会员电话   VARCHAR(10)
会员住址   VARCHAR(50)
会员备注信息  TEXT

那么这个会员编号,作为主键,使用 PRIMARY

会员姓名如果要建索引的话,那么就是普通的 INDEX

会员身份证号码如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)

会员备注信息如果需要建索引的话,可以选择 FULLTEXT,全文搜索。

来源:http://www.codetc.com/article-309-1.html

标签:mysql,索引类型,normal,unique,fulltext
0
投稿

猜你喜欢

  • go程序测试CPU占用率统计ps vs top两种不同方式对比

    2024-05-05 09:27:04
  • Elasticsearch属性单词常用解析说明

    2023-06-12 14:47:36
  • Jmeter HTTPS接口测试证书导入过程图解

    2021-11-19 18:34:36
  • PHP Laravel实现文件下载功能

    2023-11-18 12:20:27
  • 教你两步解决conda安装pytorch时下载速度慢or超时的问题

    2022-04-12 17:19:59
  • tensorflow 查看梯度方式

    2022-11-07 12:46:22
  • ajax+asp无限级分类树型结构

    2011-04-02 11:05:00
  • Python 将RGB图像转换为Pytho灰度图像的实例

    2022-05-26 14:13:08
  • 如何利用python多线程爬取天气网站图片并保存

    2022-01-21 18:16:12
  • 快速认识CSS中的overflow属性

    2009-05-29 16:36:00
  • Python可视化神器pyecharts绘制雷达图

    2021-09-30 14:50:48
  • Python多线程通信queue队列用法实例分析

    2023-09-22 21:11:44
  • Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)

    2023-03-28 12:39:51
  • Django使用paginator插件实现翻页功能的实例

    2023-09-06 05:23:19
  • Python openpyxl模块实现excel读写操作

    2023-07-17 20:15:25
  • 解决使用python print打印函数返回值多一个None的问题

    2021-08-22 07:52:09
  • CSS+asp仿迅雷人气指数

    2009-08-03 14:11:00
  • python实现linux服务器批量修改密码并生成execl

    2022-11-22 17:16:06
  • 纯numpy卷积神经网络实现手写数字识别的实践

    2023-11-08 10:44:50
  • asp.net DropDownList实现二级联动效果

    2023-07-23 07:48:41
  • asp之家 网络编程 m.aspxhome.com