![](https://img-blog.csdnimg.cn/direct/c09bbabfef7f41b092cd4c693a9adce0.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
重拾MySQL-进阶篇
文章平均质量分 94
“不要等待机会,而要创造机会。” - 奥尔森
p-宸
悟以往之不谏,知来者之可追
展开
-
SQL提示与索引终章
测试结果,我们可以看到,possible_keys中 idx_user_pro_age_sta,idx_user_pro 这两个 索引都可能用到,最终MySQL选择了idx_user_pro_age_sta索引。等)时,有时候需要索引很长的字符串,这会让 索引变得很大,查询时,浪费大量的磁盘。引中,这两个值都是可以直接获取到的,因为覆盖索引,所以不需要回表查询,性能高。,而这个索引也是一个二级索引,所以叶子节点下面挂的是这一行的主键。此时,查询时,就走了联合索引,而在联合索引中包含。原创 2024-01-23 12:02:52 · 1333 阅读 · 0 评论 -
MySQL索引的使用,大大提升你代码的效率
就是因为MySQL在查询时,会评估使用索引的效率与走全表扫描的效率,如果走全表扫描更快,则放弃索引,走全表扫描。因为索引是用来索引少量数据的,如果通过索引查询返回大批量的数据,则还不如走全表扫描来的快,此时索引就会失效。上述的SQL查询时,存在profession字段,最左边的列是存在的,索引满足最左前缀法则的基本条 件。但是查询时,跳过了age这个列,所以后面的列索引是不会使用的,也就是索引部分生效,所以索 引的长度就是47。上述的联合索引,索引长度是多少?前的条件中的列有索引,而后面的列中没有索。原创 2024-01-22 16:40:55 · 1066 阅读 · 2 评论 -
你竟然还不知道SQL性能分析?(你想象不到的详细)
如果是以增删改为主,我们可以考虑不对其进行索引的优化。如果是以查询为主,那么就要考虑对数据库的索引进行优化了。MySQL如何执行select语句的信息,包括在select语句执行过程中表如何连接和连接的顺序。就是用来判定当前数据库是以查询为主,还是修改,插入为主,再去看看需不需要优化。如说是以查询为主,我们又该如何定位针对于那些查询语句进行优化呢?度,在不损失精确性的前提下, 长度越短越好。的访问频次,从而判断当前数据库查询为主,还是增删改为主。我们可以查看到当前数据库到底是以查询为主。原创 2024-01-21 15:52:44 · 1178 阅读 · 0 评论 -
MySQL 索引(下)
✨主键索引的查找效率高:由于id是主键,主键索引是一种特殊的索引,具有唯一性和快速查找的特点。通过主键索引可以直接定位到指定id的行,因此查询效率高。回表查询: 这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取数据的方式,就称之为回表查询。✨而B语句需要先查询name字段的二级索引,然后再查询聚集索引,也就是需要进行回表查询。如果表中没有主键或者不想使用主键作为聚集索引,可以选择一个唯一非空索引作为聚集索引,(即如果存在主键,主键索引就是聚集索引。到这一行的数据,直接返回即可。原创 2024-01-20 17:15:56 · 933 阅读 · 0 评论 -
MySQL 索引(上)
当节点中关键字数大于4时,就将中间的关键字升为父节点的关键字(如果没有父节点,则创建一个父节点),然后创建此父节点的两个子节点,将中间关键字两边的关键字分别存储到这两个子节点中。非叶子节点只包含键值信息,不包含实际数据。✨对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储 的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低;✨Hash索引只能用于对等比较 (=, in),不支持范围查询(between, >, < , ...)原创 2024-01-19 16:41:04 · 1202 阅读 · 3 评论 -
MySQL体系结构
在该层, 服务器会解 析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等, 最后生成相应的执行操作。我们可以在创建表的时候,来指定选择的存储引擎,如果没有指定将自动选择默认的存储引擎。索引是在存储引擎层实现的,也就意味着不同的存储引擎,索引的结构是不一样的。引擎的每张表都会对应这样一个表空间文件,存储该表的表结 构(这样在解决大量读操作的环境中能够很好的提升系统的性能。对表的大小有限制,太大的表无法缓存在内存中。区是表空间的单元结构,每个区的大小为。原创 2024-01-18 11:34:12 · 1222 阅读 · 20 评论