数据库总结-分享

2022-06-25  本文已影响0人  格林哈

NoSQL vs SQL Databases: 6 Important Differences | Upwork

一. Mysql 开发规范

1. 规范存在的意义

2. 为什么有这个规范

2.1 InnoDB 索引的实现

CREATE TABLE `workers`
(
    `id`    int AUTO_INCREMENT COMMENT '员工工号'
        PRIMARY KEY,
    `name`  varchar(16) NOT NULL COMMENT '员工名字',
    `sales` int         NULL COMMENT '员工业绩'
) CHARSET = utf8;

INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (1, '江南', 12744);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (3, '今何在', 14082);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (7, '路明非', 14738);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (8, '吕归尘', 7087);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (11, '姬野', 8565);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (15, '凯撒', 8501);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (20, '绘梨衣', 7890);
INSERT INTO `workers` (`id`, `name`, `sales`) VALUES (21, '西泽尔', 16634);
alter table workers add index index_name(name);

回表

select * from workers where name='吕归尘';
image.png

覆盖索引

select id,name from workers where name='吕归尘';
image.png
image.png

联合索引 与 最左前缀原则

alter table workers add index index_sales_name(sales, name);
# 最左前缀原则 这两个都能命中 index_id_name这个索引
SELECT * FROM  `workers` WHERE  `name` = 'xx' AND `sales` = 1;
SELECT * FROM  `workers` WHERE  `sales ` = 1;

# 这个条件 不能命中 index_id_name这个索引
SELECT * FROM  `workers` WHERE  `name` = 'xx';

3. 从 InnoDB 索引层面 不符合规范会有什么问题

二 资料总结

博客:

CodingLabs - MySQL索引背后的数据结构及算法原理

NoSQL vs SQL Databases: 6 Important Differences | Upwork

书籍:

《高性能 MySQL》

适合 dba 和 开发

《MySQL 技术内幕:InnoDB 存储引擎》

想了解内部原理

上一篇 下一篇

猜你喜欢

热点阅读