MySQL索引操作命令详解
作者:mdxy-dxy 发布时间:2024-01-29 01:57:55
创建索引:
MySql创建索引的语法如下:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...)
其中对应的语法变量信息如下:
[UNIQUE|FULLTEXT|SPATIAL]:中括号中的三个关键字表示创建的索引类型,他们分别表示唯一索引、全文索引、空间索引三种不同的索引类型。如果我们不指定任何关键字,则默认为普通索引。
index_name:表示索引的名字,由用户自行定义,以便以后对该索引进行修改管理操作。
index_type:表示索引的具体实现方式,在MySql中,有两种不同形式的索引----BTREE索引和HASH索引。在存储引擎为MYISAM和INNODB的表中只能使用BTREE,其默认值就是BTREE;在存储引擎为MEMORY或者HEAP的表中可以使用HASH和BTREE两种类型的索引,其默认值是HASH。
index_col_name:表示需要创建索引的字段名称,我们还可以针对多个字段创建复合索引,只需要在多个字段名称之间以英文逗号隔开即可。
此外,对于char或varchar类型的字段,我们还可以只使用字段内容前面的一部分来创建索引,只需要在对应的字段后面加上形如(length)的指令即可,表示只需要使用字段内容前面的length个字符来创建索引。
CREATE INDEX idx_user_username ON user (username(6));
由于多数字段的前6个字符通常不同,所以此索引不会比使用字段的全部内容创建的索引速度慢很多。另外,使用字段的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。
必须注意的是:在MySql中,对已TEXT和BLOG这种大数据类型的字段,必须给出前缀长度(length)才能成功创建索引。
上述创建索引的语法还具有以下变体:
ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name (index_col_name,...) [USING index_type]
在MySql中,只有当表的存储引擎为MYISAM,INNODB和BDB类型时,你才能向具有NULL值的列或者数据类型为TEXT或BLOB的列添加索引。
删除索引:
在MySql中删除索引的方法非常简单,其完整语法如下:
ALTER TABLE table_name DROP INDEX index_name;
修改索引:
在MySql中并没有提供修改索引的直接指令,一般情况下,我们先删除原索引,再根据需要创建一个同名的索引,从而变相地实现修改索引的操作。
//先删除索引
ALTER TABLE table_name DROP INDEX index_name;
//创建同名的索引
CREATE INDEX index_name ON table_name (index_col_name,...);
查看索引:
在MySql中,要查看某个数据库表中的索引页非常简单,只需要使用以下两个命令中的任意一种即可:
SHOW INDEX FROM table_name [FROM db_name];
SHOW INDEX FROM [db_name.]table_name;


猜你喜欢
- MySql5.0以后均支持存储过程,最近有空,研究了一把这个。格式:以下为引用的内容:CREATE PROCEDURE
- 一、用户相关SQL语句/*新建用户*/create user SA identified by 2013;说明:SA用户名,2013密码/*
- 需求是在某一指定的时刻执行操作网上的建议多为通过调用Scheduler的add_date_job实现不过APScheduler 3.0.1与
- 本文实例讲述了Python HTML解析模块HTMLParser用法。分享给大家供大家参考,具体如下:简介先简略介绍一下。实际上,HTMLP
- 背景要做IP地址归属地查询,量比较大,所以想先从网上找到大部分的分配数据,写个蜘蛛程序来抓取入库,以后在程序的运行中不断进行维护、更新、完善
- 来看看javascript怎么实现自动点击超级链接吧,主要使用了js中的onclick事件。这里推荐大家看看这篇文章js鼠标事件大全。看了这
- 本文以实例形式讲述了Python实现抓取网页并解析的功能。主要解析问答与百度的首页。分享给大家供大家参考之用。主要功能代码如下:#!/usr
- Tips:微信小程序可以在HbuilderX用HTML标签(如Ddiv、span等)写前端代码,也可以用微信小程序语法写(view、swip
- 在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可,KILL
- 前言有时候我们的小程序太大,首次打开小程序的时候回比较慢,这个时候我们可以试试分包操作。分包可以让用户在操作小程序的时候按需下载资源(用户在
- 输入:[1.0000, -1.0000, 3.0000]课本中的标准差计算公式:按照上述公式计算:Numpy中的std计算:import n
- 我们可用正规表达式来寻找并替换URL和邮件地址为活动的超级链接。用到的主要函数就是InsertHyperlinks(inText),语法为:
- 一、Map是什么?map是一堆键值对的未排序集合,类似Python中字典的概念,它的格式为map[keyType]valueType,是一个
- 在之前一篇文章中我介绍了通过定义Response宏的方式来实现动态改变模板文件路径以实现主题功能: laravel实现模板主题功能,但后来我
- pycharm安装lxml库失败怎么办?众所周知,在pycharm中安装lxml库,一般的安装流程流程为file->settings-
- 本文实例讲述了go语言base64用法。分享给大家供大家参考。具体如下:这里展示golang base64 的一个小例子,代码如下:pack
- Merge函数的用法简单来说Merge函数相当于Excel中的vlookup函数。当我们对2个表进行数据合并的时候需要通过指定两个表中相同的
- 使用mysql5.5,突然root密码忘记,怎么也登录不了,很急人,该怎么解决呢?下面通过本文给大家介绍mysql5.5忘记root密码的解
- 远程运行最怕断电,训练了几个小时的数据说没就没,或者停止运行。用nohup 记录代码的输出,还可以不受断电的影响。方法1. 用nohup 运
- 前言:单个线程时数据操作的只有一个线程,数据的修改也只有一个线程参与,数据相对来说是安全的,多线程时对数据操作的不止一个线程,所以同时对数据