mysql 创建索引类型_mysql索引总结----mysql 索引类型以及创建者

1mysql>ALTER TABLE articleADD INDEX index_article_titleON title(200);

再次指派上述转发语句,其对比非常明显:

MySQL索引的概念

索引是一种类似的文件(InnoDB数据表上的索引是列于空间的一个组成部分),它们包括着对数据表里所有记录的所述指针。更通俗的时说,数据库索引只不过是一本书前面的目录,能较快数据库的搜索速度。上述SQL语句,在没索引的情况下,数据库可能会给定全部200条数据后同样符合条件的;而有了适当的索引之后,数据库亦会必要在索引中载入符合条件的选项。如果我们把SQL语句换掉“SELECT * FROM article WHERE id=2000000”,那么你是想要数据库按照顺序载入完了200万行数据以后给你结果还是单独在索引中定位呢?上面的两个图片迥然不同的用时对比已经得出结论了答案(中有:一般数据库匹配都会偏重于键转换成索引)。

索引分作;大簇索引和非故又称簇索引两种,合簇索引是按照数据储存的物理所在位置为顺序的,而非挈簇索引就不一样了;合簇索引能减少多行检索的速度,而非名曰簇索引对于单行的检索很快。

MySQL索引的类型

1. 普通索引

这是最基本的索引,它没有人任何管制,比如上文中为title字段始创的索引就是一个普通索引,MyIASM中选项的BTREE类型的索引,也是我们大多数情况下加到的索引。

01–这样一来建立索引

02CREATE INDEX index_nameON table(column(length))

03–删减列于结构的方式填充索引

04ALTER TABLE table_nameADD INDEX index_nameON (column(length))

05–成立表的时候同时创立索引

06CREATE TABLE `table` (

07`id`int(11)NOT NULL AUTO_INCREMENT ,

08`title`char(255)CHARACTER SET utf8COLLATE utf8_general_ciNOT NULL ,

09`content` textCHARACTER SET utf8COLLATE utf8_general_ciNULL ,

10`time`int(10)NULL DEFAULT NULL ,

11PRIMARY KEY (`id`),

12INDEX index_name (title(length))

13)

14–删去索引

15DROP INDEX index_nameON table

2. 唯一索引

与普通索引多种不同,不尽相同的就是:索引列于的值必须唯一,但容许有空值(提醒和主键不尽相同)。如果是配对索引,则列值的配对必须唯一,创建者方法和普通索引完全相同。

01–创始唯一索引

02CREATE UNIQUE INDEX indexNameON table(column(length))

03–修正请注意结构

04ALTER TABLE table_nameADD UNIQUE indexNameON (column(length))

05–创建者表的时候同样登录

06CREATE TABLE `table` (

07`id`int(11)NOT NULL AUTO_INCREMENT ,

08`title`char(255)CHARACTER SET utf8COLLATE utf8_general_ciNOT NULL ,

09`content` textCHARACTER SET utf8COLLATE utf8_general_ciNULL ,

10`time`int(10)NULL DEFAULT NULL ,

11PRIMARY KEY (`id`),

12UNIQUE indexName (title(length))

13);

3. 全文索引(FULLTEXT)

MySQL从3.23.23版开始背书全文索引和全文检索,FULLTEXT索引仅可运用于 MyISAM 注记;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被始创,或是随后运用于ALTER TABLE 或CREATE INDEX被去除。对于小得多的数据集,将你的资料读写一个未FULLTEXT索引的表中,然后创建者索引,其速度比把资料重定向现有FULLTEXT索引的速度更为更快。不过切记对于大容量的数据表,聚合全文索引是一个非常消耗时间非常消耗硬盘空间的应该。

01–创立表的适当掺入全文索引

02CREATE TABLE `table` (

03`id`int(11)NOT NULL AUTO_INCREMENT ,

04`title`char(255)CHARACTER SET utf8COLLATE utf8_general_ciNOT NULL ,

05`content` textCHARACTER SET utf8COLLATE utf8_general_ciNULL ,

06`time`int(10)NULL DEFAULT NULL ,

07PRIMARY KEY (`id`),

08FULLTEXT (content)

09);

10–修正详见结构加进全文索引

11ALTER TABLE articleADD FULLTEXT index_content(content)

12–单独创立索引

13CREATE FULLTEXTINDEX index_contentON article(content)

4. 单列索引、多列索引

多个单列索引与单个多列索引的核对效果相同,因为监督转发时,MySQL必需用作一个索引,但会从多个索引中可选择一个约束最为规范的索引。

5. 人组索引(最左冠词)

平时用的SQL查阅语句一般都有比较多的受到限制条件,所以为了进一步侵吞MySQL的效率,就要再考虑建起人组索引。例如诏命中针对title和time建起一个组合成索引:ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))。构建这样的配对索引,其实是大概分别创设了下面两组重新组合索引:

–title,time

–title

为什么很难time这样的组合成索引呢?这是因为MySQL人组索引“最左后缀”的结果。单纯的明白就是只从最左面的开始复合。并不是只要还包括这两列的搜索都会加进该第一组索引,如下面的几个SQL表:

关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿

©CopyRight 2008-2020 caicaipc.com Inc All Rights Reserved.

菜菜电脑网 版权所有 联系QQ:173533152

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值