【数据库-MySQL进阶】
文章平均质量分 80
【温故-MySQL数据库】
我一直在流浪
这个作者很懒,什么都没留下…
展开
-
MySQL - 存储过程游标循环插入数据
【代码】MySQL - 存储过程游标循环插入数据。原创 2023-02-09 11:42:14 · 1222 阅读 · 0 评论 -
MySQL - 插入和更新数据时自动设置createTime和updateTime
CURRENT_TIMESTAMP 字段设置后,当insert数据时,mysql会自动设置当前系统时间赋值给该属性字段。ON UPDATE CURRENT_TIMESTAMP 字段设置后,当update数据并且成功发生更改时,mysql会自动设置当前系统时间赋值给该属性字段。create_time 设置 CURRENT_TIMESTAMP属性。update_time 设置 ON UPDATE CURRENT_TIMESTAMP属性。datetime 类型用在你需要同时包含日期和时间信息的值时。MySQL检索原创 2022-07-07 16:19:42 · 8313 阅读 · 0 评论 -
MySQL按照字段的值排序
1. 问题今天有一个需求,将表中的数据按照业务类型排序,假如业务类型为脆弱性,那么脆弱性排在最上面。// 数据库表CREATE TABLE `T_PROCDEF_TAG` ( `ID_` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id', `PROCDEF_ID_` varchar(64) NOT NULL COMMENT 'PROCDEF id', `TAG_` varchar(255) NOT NULL COMMENT '类别', PRI原创 2022-05-12 14:51:48 · 2146 阅读 · 0 评论 -
SQL函数group_concat的用法
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])SELECT * FROM testgroup① 现在的需求就是每个id为一行 ,显示该id所有分数SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id可以看到 根据id 分成了三行 并且分数默认用 逗号 分割 但是有每个id有重复数据 接下来去重SELECT id,GROUP_CO转载 2022-04-24 19:43:52 · 1060 阅读 · 0 评论 -
温故MySQL - 26 MySQL锁家族:从数据库操作的类型划分~读锁~写锁
文章目录1. 锁定读2. 写操作对于数据库中并发事务的读-读情况并不会引起是什么问题。对于写-写、读-写或者写-读这些情况可能会引起一些问题,需要使用MVCC或者加锁的方式来解决它们。在使用加锁的方式解决问题时,由于既要允许读-读情况不受影响,又要使写-写、读-写或者写-读情况中的操作相互阻塞,所以MySQL实现一个由两种类型的锁组成的锁系统来解决。这两种类型的锁通常称为共享锁(S锁)和排他锁(X锁)。也叫读锁和写锁。读锁:也称为共享锁、英文用S表示。针对同一份数据,多个事务的读操作可以同时进行而不会原创 2022-04-16 14:26:56 · 593 阅读 · 0 评论 -
温故MySQL - 25 MySQL锁家族:解决并发事务带来问题的两种方式
文章目录1. 写-写情况2. 读-写或写-读情况2.1 方式1:读操作采用MVCC-写操作采用加锁2.2 方式2:读操作采用加锁-写操作也采用加锁3. 一致性读在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的 资源。为保证数据的一致性,需要对 并发操作进行控制 ,因此产生了 锁 。同时 锁机制 也为实现MySQL 的各个隔离级别提供了保证。 锁冲突 也是影响数据库 并发访问性能 的一个重要因素。所以锁对数据库而 言显得尤其重要,也更加复杂。并发访问相同记原创 2022-04-16 14:23:43 · 400 阅读 · 0 评论 -
温故MySQL - 24 事务日志~undo log保证事务的原子性和一致性
温故MySQL - 22 事务日志~undo log保证事务的原子性和一致性01. 事务的四大特性事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。事务的原子性、一致性和持久性由事务的 redo 日志和 undo 日志来保证。redo log 称为重做日志 ,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。undo log 称为回滚日志 ,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。redo log原创 2022-04-08 22:10:50 · 2803 阅读 · 0 评论 -
温故MySQL - 23 事务日志~redo log保证事务的持久性
文章目录redo log保证事务的持久性01. 事务的四大特性02. 什么是 Buffer Pool03. 什么是 redo log04. redo log 的好处05. redo log 的组成06. redo log 刷盘时机07. redo log 的整体流程08. redo log的刷盘策略09. 不同刷盘策略演示10. 写入redo log buffer 过程(了解)11. redo log file(了解)redo log保证事务的持久性01. 事务的四大特性事务有4种特性:原子性、一致原创 2022-04-06 22:24:43 · 1267 阅读 · 0 评论 -
温故MySQL - 22 事务的ACID特性、多事务并发问题、隔离级别
文章目录1. 存储引擎支持情况2. 基本概念3. 事务的ACID特性4. 如何使用事务4.1 显式事务4.2 隐式事务4.3 隐式提交4.4 保存点5. 多事务的并发进行造成的问题6. 事务的隔离级别6.1 事务的隔离级别6.2 设置事务的隔离级别6.3 读未提交演示案例6.4 读已提交演示案例6.5 可重读演示案例6.6 幻读演示案例1. 存储引擎支持情况SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有Inn原创 2022-03-23 22:38:41 · 742 阅读 · 0 评论 -
温故MySQL - 21 数据库主键应该如何设计?
文章目录1. UUID作为主键的问题?2. 自增ID作为主键的问题?3. 业务字段做主键的问题?4. 淘宝的主键设计5. 推荐的主键设计主键使用自增ID还是UUID,为什么?使用UUID作为主键会有什么问题?为什么要尽量设定一个主键?1. UUID作为主键的问题?从性能的角度考虑,使用UUID来作为聚簇索引则会很糟糕,它使得聚簇索引的插入变得完全随机,这是最坏的情况,使得数据没有任何聚集特性。使用UUID主键插入行不仅花费的时间更长,而且索引占用的空间页更大。这一方面是由于主键字段更长,另一方原创 2022-03-20 18:40:57 · 631 阅读 · 0 评论 -
温故MySQL - 20 什么是索引条件下推?
文章目录1. 案例分析2. 案例分析3. 案例分析数据准备:create table single_table( id int not null auto_increment, key1 varchar(100), key2 int, key3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 varchar(100), common_field varchar(100原创 2022-03-20 17:34:26 · 1166 阅读 · 0 评论 -
温故MySQL - 19 什么是覆盖索引?非聚簇索引一定会回表查询吗?
什么是覆盖索引?非聚簇索引一定会回表查询吗?非主键索引一定会查询多次吗?数据准备:create table single_table( id int not null auto_increment, key1 varchar(100), common_field varchar(100), primary key(id), # 聚簇索引 key idx_key1(key1), # 二级索引引)Engine=InnoDB CHAR.原创 2022-03-20 16:00:31 · 1039 阅读 · 0 评论 -
温故MySQL - 18 查询优化:子查询优化~排序优化~分组优化~分页优化
文章目录1. 子查询优化2. 排序(order by)优化3. 分组(group by)优化4. 分页查询(limit)优化1. 子查询优化MySQL从4.1版本开始支持子查询,使用子查询可以进行SELECT语句的嵌套查询,即一个SELECT查询的结 果作为另一个SELECT语句的条件。子查询可以一次性完成很多逻辑上需要多个步骤才能完成的SQL操作 。 子查询是 MySQL 的一项重要的功能,可以帮助我们通过一个 SQL 语句实现比较复杂的查询。但是,子 查询的执行效率不高。原因:执行子查询时,M原创 2022-03-20 15:01:11 · 1866 阅读 · 0 评论 -
温故MySQL - 17 查询优化:连接查询优化
文章目录1. 连接查询的本质2. 内连接和外连接3. 连接查询的原理3. 关联查询的优化3.1 外连接优化3.2 内连接优化1. 连接查询的本质数据准备:create table t1( m1 int, n1 char(1));create table t2( m2 int, n2 char(1));insert into t1 values(1,'a'),(2,'b'),(3,'c');insert into t2 values(2,'b'),(3,'c'),(4,'d');如原创 2022-03-19 14:19:26 · 1278 阅读 · 0 评论 -
温故MySQL - 16 索引优化:索引失效的情况
数据准备:# 创建表classCREATE TABLE `class` (`id` INT(11) NOT NULL AUTO_INCREMENT,`className` VARCHAR(30) DEFAULT NULL,`address` VARCHAR(40) DEFAULT NULL,`monitor` INT NULL ,PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;# 创建表stu原创 2022-03-18 18:02:58 · 566 阅读 · 0 评论 -
温故MySQL - 15 性能分析工具:explain执行计划~rows列、extra列
文章目录0. 数据准备1. rows列2. extra列1. no tables used2. impossible where3. using index4. using index condition5. using where6. using filesort7. using tempory0. 数据准备CREATE TABLE s1 (id INT AUTO_INCREMENT,key1 VARCHAR(100),key2 INT,key3 VARCHAR(100),key_part1原创 2022-03-14 22:28:41 · 1814 阅读 · 0 评论 -
温故MySQL - 14 性能分析工具:explain执行计划~possible_keys列、key列、key_len列
文章目录数据准备1. possible_keys列、key列2. key_len列数据准备// 创建表s1CREATE TABLE s1 (id INT AUTO_INCREMENT,key1 VARCHAR(100),key2 INT,key3 VARCHAR(100),key_part1 VARCHAR(100),key_part2 VARCHAR(100),key_part3 VARCHAR(100),common_field VARCHAR(100),PRIMARY KEY原创 2022-03-14 17:50:38 · 1732 阅读 · 0 评论 -
温故MySQL - 13 性能分析工具:explain执行计划~type列
文章目录0. 数据准备01. system02. const03. eq_ref04. ref05. ref_or_null06. index_merge07. unique_subquery08. index_subquery09. range10. index11. all0. 数据准备// 创建表s1CREATE TABLE s1 (id INT AUTO_INCREMENT,key1 VARCHAR(100),key2 INT,key3 VARCHAR(100),key_part1原创 2022-03-14 15:33:33 · 1405 阅读 · 0 评论 -
温故MySQL - 12 性能分析工具:explain执行计划~id列、table列、select_type列
文章目录1. 数据准备2. table列3. id列1. 数据准备// 创建表s1CREATE TABLE s1 (id INT AUTO_INCREMENT,key1 VARCHAR(100),key2 INT,key3 VARCHAR(100),key_part1 VARCHAR(100),key_part2 VARCHAR(100),key_part3 VARCHAR(100),common_field VARCHAR(100),PRIMARY KEY (id),INDEX原创 2022-03-14 13:36:12 · 1559 阅读 · 0 评论 -
温故MySQL - 11 性能分析工具:查看SQL执行成本~show profilie
show profile是MySQL提供的可以用来分析当前会话中SQL都做了什么、执行的资源消耗情况的工具,可用于SQL调优的测量。默认情况下处于关闭状态,并保存最近15次的运行结果。在会话级别开启这个功能:show variables like 'profiling';通过设置 profiling='on’ 来开启 show profile:set profiling='on';先执行2次查询语句:select * from student where name='RMkRAc';s原创 2022-03-13 12:46:01 · 867 阅读 · 0 评论 -
温故MySQL - 10 性能分析工具:定位执行慢的SQL~慢查询日志
文章目录1. 开启慢查询日志参数2. 修改long_query_time阈值3. 查询慢查询的条目数4. 慢查询日志分析工具:mysqldumpslow5. 关闭慢查询日志定位执行的SQL :慢查询日志MySQl的慢查询日志,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间。它的主要作用是,帮助我们发原创 2022-03-13 11:11:42 · 474 阅读 · 0 评论 -
温故MySQL - 09 性能分析工具:查看SQL的查询成本~last_query_cost
一条SQL查询语句在执行前需要确定查询执行计划,如果存在多种执行计划的话,mysql会计算每个执行计划所需要的成本,从中选择成本最小的一个作为最终执行的执行计划。如果我们想要查看某条SQL语句的查询成本,可以在执行完这条SQL语句之后,通过查看会话当中的last_query_cost变量值来得到当前查询的成本。它也是我们评价一个查询的执行效率的常用指标。这个查询成本代表执行SQL语句需要读取的页的数量。示例1:// 查询id=900001的记录,可以直接在聚簇索引上进行查找select * from原创 2022-03-11 10:40:07 · 1227 阅读 · 1 评论 -
温故MySQL - 08 性能分析工具:查看系统的性能参数~show status
2. 查看系统性能参数在MySQL中,可以使用show status语句查询一些MySQL数据库服务器的性能参数、执行频率 。show status语句语法如下:show [global|session] status like '参数';一些常用的性能参数如下:connections:连接mysql服务器的次数。uptime:mysql服务器的上线时间。slow_queries:慢查询的次数。innodb_rows_read:select查询返回的行数innodb_rows_inse原创 2022-03-11 10:38:58 · 658 阅读 · 0 评论 -
温故MySQL - 07 数据库服务器的优化步骤
1. 数据库服务器的优化步骤当我们遇到数据库调优问题的时候,该如何思考呢?整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。我们可以通过观察了解数据库整体的运行状态,通过性能分析工具可以让我们了解执行慢的SQL都有哪些,查看具体的SQl执行计划,甚至是SQL执行中的每一步成本计划,这样才能定位问题所在,找到了问题,再采取相应的行动。首先在S1部分,观察服务器的状原创 2022-03-11 10:35:14 · 376 阅读 · 0 评论 -
温故MySQL - 06 哪些情况不适合建索引?
文章目录1. 在where中使用不到的字段,不要设置索引2. 数据量小的表最好不要使用索引3. 有大量重复数据的列上不要建立索引4. 避免对经常更新的表创建过多的索引5. 不建议用无序的值作为索引6. 删除不再使用或者很少使用的索引7. 不要定义冗余或重复的索引1. 在where中使用不到的字段,不要设置索引where条件(包括group by、order by)里用不到的字段不需要创建索引,索引的价值是快速定位,如果起不到快速定位的字段通常是不需要建立索引的。我们只为出现在where子句中的列、or原创 2022-03-09 21:38:41 · 1355 阅读 · 0 评论 -
温故MySQL - 05 哪些情况下适合建立索引?
问题02:什么情况下应不建或少建索引?查看mysql是否允许创建函数:show variables like 'log_bin_trust_function_creators';命令开启:允许创建函数设置:set global log_bin_trust_function_creators=1; # 不加global只是当前窗口有效。数据准备:# 创建表CREATE TABLE `student_info` ( `id` INT(11) NOT NULL AUTO_INCREMENT,原创 2022-03-09 10:36:42 · 345 阅读 · 0 评论 -
温故MySQL - 04 MySQL索引有哪几种类型?
文章目录问题01:索引有哪几种类型?问题02:如何创建索引?问题01:索引有哪几种类型?MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。按照功能逻辑,索引主要分为:普通索引、唯一索引、主键索引、全文索引。按照物理实现方式,索引分为:聚簇索引和非聚簇索引。按照作用字段个数,索引分为:分成单列索引和联合索引。1. 普通索引在创建普通索引时,不附加任何条件,只是用于提高查询效率。比如在student表中为name建立索引,在查询时使用该索引可以提高查询效率。2.原创 2022-03-08 10:34:04 · 398 阅读 · 0 评论 -
温故MySQL - 03 MySQL索引数据结构的选择
文章目录问题01:什么是Hash索引?问题02:Hash索引和B+树有什么区别? 你在设计索引是怎么抉择的?问题03:索引为什么要用B+树而不是二叉树?问题04:索引为什么要用B+树而不是B树?问题05:B树和B+树的区别?问题01:什么是Hash索引?答案:哈希索引基于哈希表实现,只有精确匹配索引列的查询才有效,对于每一行数据,存储引擎都会对索引列计算一个哈希码,不同行计算出来的哈希码不一样,哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。create table te原创 2022-03-06 16:48:30 · 414 阅读 · 0 评论 -
温故MySQL - 02 什么是聚簇索引?非聚簇索引?联合索引?回表?
文章目录问题01:什么是B+树索引?问题02:什么是聚簇索引?问题03:建立聚簇索引的优点和缺点?问题04:什么是非聚簇索引/二级索引/辅助索引?问题05:什么是回表?问题06:回表有什么代价?问题07:聚簇索引和二级索引的区别?问题08:聚簇索引和非聚簇索引在查询上的区别?问题09:非聚簇索引与聚簇索引的非叶子节点存放的是什么?问题10:什么是联合索引?问题11:如何根据联合索引查询?问题12:MyISAM的索引是怎么实现的?问题13:B+树的叶子节点可以存储哪些东西?问题01:什么是B+树索引?如图原创 2022-03-05 23:27:38 · 992 阅读 · 1 评论 -
温故MySQL - 01 索引是什么?为什么使用索引?索引的优缺点?
温故MySQL - 01 索引是什么?为什么使用索引?索引的优缺点?文章目录问题1:索引是什么?问题2:为什么使用索引?问题3:索引的优点?问题4:索引的缺点?问题1:索引是什么?答案:索引是帮助MySQL高效获取数据的数据结构。解读:索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法 。问题2:为什么使用索引?答案:建立索引的目的是为了减少磁盘IO的次数,加快查询原创 2022-03-04 09:25:59 · 574 阅读 · 0 评论 -
深耕MySQL - 单表访问方法
文章目录1. const访问方法2. ref访问方法3. ref_no_null访问方法4. range访问方法5. index访问方法6. all访问方法create table single_table( id int not null auto_increment, key1 varchar(100), key2 int, key3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_p原创 2022-03-02 23:01:58 · 538 阅读 · 1 评论 -
深耕MySQL - 使用UUID作为主键会有什么问题?
从性能的角度考虑,使用UUID来作为聚簇索引则会很糟糕,它使得聚簇索引的插入变得完全随机,这是最坏的情况,使得数据没有任何聚集特性。使用UUID主键插入行不仅花费的时间更长,而且索引占用的空间页更大。这一方面是由于主键字段更长,另一方面是由于页分裂和碎片导致的。因为主键的值时顺序的,所以InnoDB把每一条记录都存储在上一条记录的后面,当本页中的记录满时,下一条记录就会插入到新的页中,一旦按照这种顺序的方式加载,主键页就会近似于别顺序的记录填满,这也正是所期望的结果。因为新行的主键值不一定比之前插入的原创 2022-02-27 22:10:41 · 1953 阅读 · 0 评论 -
深耕MySQL - 使用索引查询一定能提高查询的性能吗?
本文章可解答的面试题:为什么索引能加快查找速度?使用索引查询一定能提高查询的性能吗?为什么?什么情况下应不建或少建索引 ?哪些情况适合建索引?哪些情况不适合建索引?1. 为什么索引能加快查找速度?表中存放的记录很多时,需要用到很多数据页来存储这些记录,而在这些页中查找记录可以分为两个步骤,首先定位到记录所在的页,其次从所在的页内查找相应的记录。在没有索引的情况下,无论是根据主键列还是其他列的查找,由于我们不能快速定位到记录所在的页,所以只能从第一页沿着双向链表一直往下找,在每一页中查找指原创 2022-02-27 21:40:11 · 2426 阅读 · 0 评论 -
深耕MySQL - 为数据表建立索引的原则有哪些?
文章目录1. 索引是什么?2. 索引的优点?3. 索引的缺点?4. 在建立索引的时候,都有哪些需要考虑的因素呢?1、只为用于搜索、排序、分组的列创建索引2、索引列的类型尽量小3、为列前缀建立索引4、覆盖索引5、让索引列以列名的形式在搜索条件中单独出现6、新插入记录时主键大小对效率的影响7、冗余和重复索引本文章可解答的面试题:索引是什么?索引的优点?索引的缺点?在建立索引的时候都有哪些需要考虑的因素呢?为数据表建立索引的原则有哪些?什么是索引覆盖?非聚簇索引一定会回表查询吗?1. 索引是原创 2022-02-27 15:12:07 · 859 阅读 · 0 评论 -
深耕MySQL - Hash索引和B+树索引的区别
文章目录1. Hash索引结构2. Hash索引和B+树索引的区别1. Hash索引结构哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效,对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码,哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样,哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。① 假如有下面一张表:create table testhash( fname varchar(50) not null, key using hash(原创 2022-02-26 22:56:51 · 407 阅读 · 1 评论 -
深耕MySQL - 什么是回表?
文章目录1. 使用全表扫描查询2. 使用索引idx_key1查询3. 回表的代价首先建立一张数据库表:create table single_table( id int not auto_increment, key1 varchar(100), key2 int, kay3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 varchar(100), primary key原创 2022-02-26 22:46:35 · 343 阅读 · 0 评论 -
深耕MySQL - MySQL索引的作用
文章目录1、索引用于建立扫描区间2、索引用于排序3、索引用于分组面试题:索引的作用?首先建立一张数据库表:create table single_table( id int not auto_increment, key1 varchar(100), key2 int, kay3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 varchar(100), primary原创 2022-02-26 21:39:16 · 477 阅读 · 0 评论 -
深耕MySQL - 索引下推
面试题:什么是索引下推?首先建立一张表,并未表中的列建立索引:create table single_table( id int not auto_increment, key1 varchar(100), key2 int, kay3 varchar(100), key_part1 varchar(100), key_part2 varchar(100), key_part3 varchar(100), primary key(id), # 聚簇索原创 2022-02-24 23:50:34 · 645 阅读 · 0 评论 -
深耕MySQL - 如何使用联合索引执行查询
文章目录1. 什么是联合索引2. 使用联合索引执行查询(索引列是否生效)1. 什么是联合索引同时以多个列作为排序规则,也就是同时为多个列建立索引。比如,我们想让B+树按照c2列和c3列的大小进行排序,这两包含两层含义:先把各个记录和页按照c2列进行排序;在记录的c2列相同的情况下,再采用c3列进行排序;为c2列和c3列建立索引,示意图为:在上图的B+树中需要注意以下两点:每条目录项记录都由c2例、c3列、页号这3部分组成。各条记录先按照c2列的值进行排序,如果记录的c2列相同,则按照原创 2022-02-24 23:25:15 · 2038 阅读 · 0 评论 -
深耕MySQL - 聚簇索引和非聚簇索引的区别
都是B+树的数据结构,聚簇索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。聚簇索引: 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据非聚簇索引: 将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置聚簇索引是顺序结构与数据存储物理结构一致的一种索引,并且一个表的聚簇索引只能有唯一的一条;一个表对应的非聚簇索引可以有多条,根据不同列的约束可以建立不同要求的非聚簇索引;优势1、查找通过聚簇索引可以直接获取到数据,相比非聚簇索引需原创 2022-02-21 10:14:27 · 488 阅读 · 0 评论