MySQL数据库索引

索引在数据库开发中有非常重要的作用,通过在表字段中建立索引可以优化查询,确保数据的唯一性,并且可以对任何全文索引字段中大量文本的搜索进行优化。在MySQL中主要有四类索引:主键索引、唯一索引、常规索引、和全文索引。

主键索引(PRIMARY KEY)

主键索引是关系型数据库中最常见的索引类型,主要作用是确定数据表里一条数据记录的位置。数据表会根据主键的唯一性来标识每条记录,任意两条记录里的主键字段都不允许是同样的内容,这样可以加快寻址定位时的速度。最好为每张数据表指定一个主键,但一个表只能指定一个主键,而且主键的值不能为空,不过可以有多个候选索引。

唯一索引(UNIQUE KEY)

唯一索引与主键索引一样,都可以防止创建重复的值。但是,不同之处在于每个表只能有一个主键索引,但是可以有多个唯一索引。唯一索引的作用就是保证某列数据的值不能相同。

常规索引(INDEX)

常规索引技术是关系型数据库查询中最重要的技术,如果要提升数据库的性能,索引优化是首先应该考虑的,因为它能使我们的数据库得到最大性能的提升。如果没有索引的数据表,就没有排序的数据集合,要查询数据就要进行全表扫描。有索引的表是一张在索引列上排序了的表,可以通过索引快速定位记录。在MyISAM数据表中数据行保存在数据文件中,索引保存在索引文件中。而InnoDB数据表把数据与索引放在用一个文件中。
常规索引也存在缺点,例如,多占用磁盘空间,而且还会减慢索引数据列上的插入,删除,和修改操作,它们也需要按照索引列上的排序格式执行。因此索引应该创建在搜索,排序,分组等操作所涉及的数据列上。也就是where子句,关联检索中的from子句,order by或group by 子句中出现过的数据列最适合用来创建这种索引。不要建立太多索引,索引是会消耗系统资源的,要适可而止。
常用的索引命令如下:

CREATE INDEX ind ON carts(price , name)       #创建名称为ind的索引为carts表的两列
SHOW INDEX FROM carts          #显示carts表所有的索引
DROP INDEX ind ON carts        #删除ind索引

全文索引(FULLTEXT)

MySQL从版本3.23.23开始支持全文索引和搜索,使你在不使用模式匹配操作的情况下搜索单词或短语。但全文索引只能在MyISAM下的CHAR,VARCHAR,或TEXT类型的列上创建,也允许创建一个或多个数据列上,只是一种特殊的索引,它会把某个数据表的某个数据列上出现过的所有单词生成一份清单。

  • 全文索引的创建和别的索引类型创建类似,但基于全文索引获取查询却有所不同。在SELECT 语句中需要使用 MATCH() 和AGAINST() 两个特殊的MySQL函数,MATCH函数负责列举将对它搜索的一个或多个数据列,而AGAINST()函数则负责给出搜索字符串。例如,我们要在数据表books的detail字段中搜索字符串“hello”,SELECT语句如下所示:
SELECT bookname,price FROM books WHERE MATCH(detail) AGAINST('hello')       #全文索引

该查询列出在detail出现的“hello”的记录,以相关性从高到低的顺序排序。另外,这两个函数除了在where子句中使用,还可以放到查询体中。这样,执行MySQL会搜索books表中的每一条记录,计算各条记录的相关值,并返回匹配记录的加权分列表。返回的分数越高,相关性越大,如下所示:

SELECT MATCH(detail)AGAINST("hello") FROM books;       #全文索引
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容