mysql 数字索引_mysql 的索引

1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容。

2)让获取的数据更有目的性,从而提高数据库检索数据的性能。

1.索引的类型

1)BTREE:B+树索引 (Btree B+tree B*tree)

2)HASH:HASH索引 hash key

3)FULLTEXT:全文索引

4)RTREE:R树索引

​ Btree索引

ae1f88a425ac616f969aecef7d326b87.png

比如 我要搜索一个数字 38 这时要走3次IO

然后在搜索一个>38 <70 的数字 这时要走9次IO

957c0523680060c23776549d5785f051.png

​ B+tree算法

ce30251eb86a27a1ac25ab9da9cf9366.png

比如 我要搜索一个数字 38 这时要走3次IO

然后在搜索一个>38 <70 的数字 这时要走6次IO 注意 他是不走指针的 里面的Q代表指针

好处:1。优化了范围查询

2.在叶子节点添加了相邻节点的指针

57e9806fdc534a543124c73287833428.png

​ B*tree

af47ea076f6a03d88907b4d7f4ec14bf.png

比如 我要搜索一个数字 38 这时要走3次IO

然后在搜索一个>38 <70 的数字 这时要走2次IO 注意 他是不走指针的 里面的Q代表指针

而且他只在枝节点上找

好处:在枝节点添加了相邻 节点的指针

8f4f6aa45ec846d6168350942ea4aa5d.png

2.索引管理

1.索引必须添加在列上面

2.在where后面接上建立索引的列,会加快查询速度

3.pages

3.索引的分类

主键索引(primary key)

普通索引 ***(key)

唯一索引(unique key)

4.添加索引

1普通索引

#创建索引:alter tabler + 表名 add index idx_+索引名

mysql> alter table student2 add index idx_sage_sage(sage);

Query OK, 0 rows affected (0.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student2;

+----------+---------------------+------+-----+-------------------+----------------+

| Field | Type | Null | Key | Default | Extra |

+----------+---------------------+------+-----+-------------------+----------------+

| sid | int(11) | NO | PRI | NULL | auto_increment |

| sname | varchar(10) | NO | MUL | NULL | |

| sage | tinyint(3) unsigned | YES | MUL | NULL | |

| sgender | enum('m','f') | NO | | m | |

| cometime | datetime | NO | | CURRENT_TIMESTAMP | |

+----------+---------------------+------+-----+-------------------+----------------+

5 rows in set (0.00 sec)

mysql> show create table student2;

+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table |

+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| student2 | CREATE TABLE `student2` (

`sid` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',

`sname` varchar(10) NOT NULL COMMENT '学生姓名',

`sage` tinyint(3) unsigned DEFAULT NULL COMMENT '学生年龄',

`sgender` enum('m','f') NOT NULL DEFAULT 'm' COMMENT '学生性别',

`cometime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入学时间',

PRIMARY KEY (`sid`),

KEY `idx_snamex_sname` (`sname`),

KEY `idx_sage_sage` (`sage`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |

+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

2.主键索引

#alter table +表名 add primary key pri_+想加的主索引名字

mysql> alter table st add primary key pri_i

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值