MySQL中索引的操作

    xiaoxiao2026-01-01  2

    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
    最新回复(0)