标签:区别 怎么 提高 创建 inno sla default 索引排序 strong
索引是一种提高数据库查询效率的数据结构(我们说的一般都是B+ tree索引)
(root@localhost) [test]> show create table l \G
*************************** 1. row ***************************
Table: l
Create Table: CREATE TABLE `l` (
`a` int(11) NOT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
PRIMARY KEY (`a`), -- 主键
UNIQUE KEY `c` (`c`), -- 唯一索引
KEY `b` (`b`) -- 普通索引
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.08 sec)
一张表可以有多个索引,索引就是对创建索引的这些列进行排序
优点:
使查询速度变得非常快,且这个快基本上和数据量没关系
缺点:
很多索引都要排序则要对这些索引列进行维护,直接插入本来很快,但是有了索引做ddl操作则代价比较大,虽说不能太多索引列,但是大场景下很难做大
tips:
主键和唯一索引的区别:
很多人说一张表不能太大,太大要拆表?这么说的两个原因(oracle没这个说法):
a.MySQL之前的DDL操作,比较麻烦,创建了索引,再做这些会表锁(全局读锁),数据量太大会锁时间太长,也就是之前不支持online ddl嘛。以前都是先在slave上搞,搞好做个主从的切换
b.之前MySQL的索引源代码的实现上有一把大锁,导致性能比较一般,不过没有淘宝这个业务量基本上影响不大,但是5.7也解决了这个问题
综上:MySQL5.7这时候,索引本身已经实现地很完整了(管理和性能两个方面),一亿不是什么问题
tips:
再强调:
1.MySQL用SSD
2.拆表不会提升性能
3.现在不存在最多多少记录的问题
标签:区别 怎么 提高 创建 inno sla default 索引排序 strong
原文地址:https://www.cnblogs.com/---wunian/p/9149647.html