DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`;
USE `test`;
# 在数据库中,数据库对象表是存储和操作数据的逻辑结构,
# 数据库对象索引是一种有效的组合数据的方式,通过索引对象,可以快速查询到数据库对象表中特定的记录
# 是一种提高性能的常用方式,一个索引会包含表中按照一定顺序排序的一列或多列字段
# 我现在感觉就是类似于map里面的那个index
# 数据库对象索引就像书的目录一样,主要是为了提高从表中检索数据的速度
# 由于数据库是存储在数据库表中,所以索引是创建在数据库表的对象上的
# 由表的一个字段或多个字段生成的键组成,这些键存储在数据结构中,
# 根据索引的存储类型可以将索引分为B树索引和哈希索引,
# MySQL支持六种索引,普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引
# 索引会占据一部分磁盘空间,在经常被查询的字段,应当设置索引
# 创建和查看普通索引
# 普通索引指的是在创建索引的时候不附加任何的限制条件,该类型的索引可以被创建在任意数据类型的字段上
# 1. 创建表时创建普通索引
CREATE TABLE `person` (
`name` VARCHAR(20) NOT NULL,
`department` VARCHAR(20),
`score` DOUBLE,
INDEX `ind`(`name` ASC, `department` DESC)
# 创建了一个索引,通过两个字段进行索引,索引名为ind,
# 在这个索引中,name字段通过升序排列,department使用降序排列
);
DESC PERSON;
EXPLAIN SELECT *
FROM `person`
WHERE `name` = 1;
# 2. 在已存在的表中创建普通索引
CREATE TABLE `man` (
`name` VARCHAR(20) UNIQUE,
`age` INT,
`score` INT
); # 以上是一个以存在的表
CREATE INDEX `index` ON `man` (
# 在表man中创建索引,索引名为index
`name` ASC, `score` DESC # ASC为升序,DESC为降序
);
DESC `man`;
EXPLAIN SELECT *
FROM `man`
WHERE `name` = 1;
DROP INDEX `index` ON `man`; # 删除索引
ALTER TABLE `man` # 通过ALTER TABLE 创建索引
ADD INDEX `inde`(
`name` ASC, `score` DESC
);
# 创建和查看全文索引
# 全文索引主要关联在数据类型为CHAR,VARCHAR,TEXT的字段上,以便能够更加快速地查询数据量较大的字符串类型的字段
# 全文索引只能创建在MyISAM的数据库引擎中,默认情况下,全文索引的搜索执行方式不区分大小写
# 如果全文索引所关联的字段为二进制数据类型,则以区分大小写的搜索方式执行
# 重新建个数据库吧
DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`;
USE `test`;
# 创建表时创建全文索引
CREATE TABLE `tab1` (
`name` VARCHAR(20),
`score` INT,
`information` TEXT,
FULLTEXT INDEX `ind`(`name`) # 创建一个全文索引
)
ENGINE = MyISAM;
INSERT INTO `tab1` (name, score, information) VALUES ('lyst', 100, 'I love wth!');
DESC `tab1`;
EXPLAIN SELECT *
FROM tab1
WHERE name = ''; # 验证全文索引是否被使用
DROP INDEX `ind` ON `tab1`; # 删除索引
# 在已存在的表中创建全文索引
CREATE FULLTEXT INDEX `ind` ON `tab1` (`name`); # 在已存在表中创建全文索引
DROP INDEX `ind` ON `tab1`; # 删除索引
ALTER TABLE `tab1`
ADD FULLTEXT INDEX `ind`(`name`); # 使用ALTER TABLE语句添加索引
INSERT INTO `tab1` (name, score, information) VALUES ('lyst', 100, 'I love wth!');
EXPLAIN SELECT *
FROM tab1
WHERE name = ''; # 验证全文索引是否被使用
DROP INDEX `ind` ON `tab1`;
# 创建和查看多列索引
# 多列索引就是在创建索引时,所关联的不是一个字段,而是多个字段,虽然可以通过多个字段进行关联
# 但是只有查询条件中使用了所关联的第一个字段,多列索引才会被使用
# 就像一个存储个人信息的数据库,假设两个人名字相同,下一步我们可以通过id进行索引
# 多列索引与普通索引的创建只有很小的区别
DROP TABLE `tab1`; # 删除表
CREATE TABLE `tab1` (
`name` VARCHAR(20),
`score` INT,
`information` TEXT,
INDEX `ind`(`name`, `information`) # 这是一个多列索引
);
# 其余的,使用CREATE INDEX ON 语句与ALTER TABLE 语句建立多列索引与前面的一样
# 不再一一解释
首发于我的个人网站:
点击打开链接
转载请注明原文地址: https://ju.6miu.com/read-1305536.html