美文网首页mysqlMySQL数据库
MySql普通索引的管理

MySql普通索引的管理

作者: 技术老男孩 | 来源:发表于2023-02-19 07:36 被阅读0次

一、普通索引的使用规则:

  • 一个表中可以有多个index
  • 字段的值可以重复,且可以赋值为null
  • 通常在where条件中的字段上配置Index
  • index索引字段的标志为MUL

二、普通索引的语法结构:

添加索引(新表)

CREATE TABLE 库.表(
字段列表 ,
INDEX(字段名) ,
INDEX(字段名)
);

添加索引(旧表)

CREATE INDEX 索引名 ON 库.表(字段名)

删除索引

DROP INDEX 索引名 ON 库.表;

查看索引详细信息

show index from 库.表;

三、explain命令可以查看执行的查询select语句, 是否使用到索引做查询了

  • 不添加索引查询
# 所有表头都没有MUL 标记
mysql> desc db1.t3;    
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | char(50)     | YES  |     | NULL    |                |
| password | char(1)      | YES  |     | NULL    |                |
| uid      | int(11)      | YES  |     | NULL    |                |
| gid      | int(11)      | YES  |     | NULL    |                |
| comment  | varchar(200) | YES  |     | NULL    |                |
| homedir  | varchar(60)  | YES  |     | NULL    |                |
| shell    | varchar(30)  | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
 
# 查看表的总行数
mysql> select count(*) from db1.t3;  
+----------+
| count(*) |
+----------+
|       22 |
+----------+
1 row in set (0.00 sec)

# 查找名字叫sshd的用户
mysql> select * from db1.t3 where name="sshd";
+----+------+----------+------+------+-------------------------+-----------------+---------------+
| id | name | password | uid  | gid  | comment                 | homedir         | shell         |
+----+------+----------+------+------+-------------------------+-----------------+---------------+
| 18 | sshd | x        |   74 |   74 | Privilege-separated SSH | /var/empty/sshd | /sbin/nologin |
+----+------+----------+------+------+-------------------------+-----------------+---------------+
1 row in set (0.00 sec)

# 查看(key列 、 rows列)使用没有索引的表头做查询条件 找1条记录也要遍历整张表的所有行
mysql> explain select * from db1.t3 where name="sshd";    
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | t3     | NULL        | ALL  | NULL           | NULL | NULL    | NULL |   22 |    10.00 | Using where |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
  • 比对添加索引查询
# 给db1库下的t3表的name表头下的数据创建排队信息 索引名叫xingming
mysql>  create   index    xingming  on  db1.t3(name) ; 
mysql> desc db1.t3;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | char(50)     | YES  | MUL | NULL    |                |
| password | char(1)      | YES  |     | NULL    |                |
| uid      | int(11)      | YES  |     | NULL    |                |
| gid      | int(11)      | YES  |     | NULL    |                |
| comment  | varchar(200) | YES  |     | NULL    |                |
| homedir  | varchar(60)  | YES  |     | NULL    |                |
| shell    | varchar(30)  | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

# 查看(key列  、 rows列)不会遍历所有行 
mysql> explain select * from db1.t3 where name="sshd";  
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key       | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
|  1 | SIMPLE       | t3    | NULL        | ref  | xingming       | xingming | 51      | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

mysql> select * from db1.t3 where name="sshd";
+----+------+----------+------+------+-------------------------+-----------------+---------------+
| id | name | password | uid  | gid  | comment                 | homedir         | shell         |
+----+------+----------+------+------+-------------------------+-----------------+---------------+
| 18 | sshd | x        |   74 |   74 | Privilege-separated SSH | /var/empty/sshd | /sbin/nologin |
+----+------+----------+------+------+-------------------------+-----------------+---------------+
1 row in set (0.00 sec)

相关文章

  • MYSQL索引

    mysql的4种常用索引类型:唯一索引,主键索引,全文索引,以及普通索引。 普通索引(INDEX):普通索引为索引...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

  • MySQL操作索引

    MySQL操作索引 增加普通索引 增加唯一索引 删除索引

  • mysql

    1.mysql索引的类型,主键索引、唯一索引、普通索引、组合索引、全文索引,b-tree索引 2.mysql具体有...

  • Mysql 基础知识(下)

    Mysql 基础知识(上) 1.4. Mysql的索引实现 1.4.1. 常见的索引 常见的索引有:普通索引、唯一...

  • mysql索引

    mysql支持的索引 索引是在存储引擎层实现。而不是在mysql内实现 B-tree索引 index 普通索引 没...

  • 7. Interview-MySQL

    1 MySQL索引类型? 普通索引,index 主键索引,primary 唯一索引,unique index 全文...

  • 20、MySQL 索引类型有哪些?

    MySQL 索引类型有哪些? 主键索引 索引列中的值必须是唯一的,不允许有空值。 普通索引 MySQL中基本索引类...

  • MySQL索引类型

    MySQL的索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 普通索引 ind...

  • Mysql 索引

    Mysql 索引的目的 索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。 Mysql 有哪些索引 普通索引...

网友评论

    本文标题:MySql普通索引的管理

    本文链接:https://www.haomeiwen.com/subject/dzgtkdtx.html