MySQL数据库中的索引

普通索引 index

建表时创建

CREATE TABLE mytable (
	`name` VARCHAR(32) ,
	INDEX index_mytable_name (`name`)
);

建表后,直接创建索引

CREATE INDEX index_mytable_name ON mytable(name);

修改表结构

ALTER TABLE mytable ADD INDEX index_mytable_name (name);

唯一索引 unique index

建表的时候一起创建

CREATE TABLE mytable (
    `name` VARCHAR(32) ,
    UNIQUE index_unique_mytable_name (`name`)
);

建表后,直接创建索引

CREATE UNIQUE INDEX index_mytable_name ON mytable(name);

修改表结构

ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);

主键索引

建表的时候一起创建

CREATE TABLE mytable (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `name` VARCHAR(32) ,PRIMARY KEY (`id`)
);

修改表结构

ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);

组合索引

建表的时候一起创建

CREATE TABLE mytable (
    `id` int(11) ,
    `name` VARCHAR(32) ,INDEX index_mytable_id_name (`id`,`name`)
);

建表后,直接创建索引

CREATE INDEX index_mytable_id_name ON mytable(id,name);

修改表结构

ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name);

全文索引

主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。

fulltext索引配合match against操作使用,而不是一般的where语句加like。

它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。

创建方法:

建表的时候一起创建

CREATE TABLE `article` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(250) NOT NULL ,
    `contents` text NULL ,`create_at` int(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),FULLTEXT (contents)
);

建表后,直接创建索引

CREATE FULLTEXT INDEX index_article_contents ON article(contents);

修改表结构

ALTER TABLE article ADD FULLTEXT INDEX index_article_contents (contents);

使用全文索引:

SELECT * FROM `表名` WHERE MATCH (`列名`,`可以一列可以多列`) AGAINST ('要搜索的关键字' IN NATURAL LANGUAGE MODE);	-- NATURAL LANGUAGE MODE表示自然语言搜索,就是普通的关键词搜索
SELECT * FROM `表名` WHERE MATCH (`列名`,`可以一列可以多列`) AGAINST ('+文章里应该包含的字符串 -文章里不应该包含的字符串' IN BOOLEAN MODE);	-- BOOLEAN MODE 可以用 + - 表示关键字必须包含或必须不包含

其他索引就正常select的时候,有索引就会自动用索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值