为什么这么设计索引
- 如果你仔细阅读了上一部分,那么你一定知道为什么数据库索引采用的是B+Tree, 说白了就是为了提高查询效率。因为只有B+Tree 在满足平衡特性的情况下能够存储更多的索引内容从未维持这颗树在一定高度上。至于为什么不用Hash表那就更不用说了。一个是它发生冲突概率太大另外一个就是他实际就是个链表,链表和树相比肯定是树查询快。
2024年09月11日
2024年09月11日
工作中总需要查看当前用户的表结构、主键、索引,所以作为备忘,顺便分享给大家。
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表
2024年09月11日
索引主要是用于提高数据检索速度的一种机制,通过索引数据库可以快速定位到目标数据的位置,而不需要遍历整个数据集,它就像书籍的目录部分,有它的存在,可以大大加速查询的效率。
那么问题来了:在创建索引时一定会锁表吗?
如果你看的是网上的一些资料,或者是通过 chatgpt,那么很可能得到的结果是这样的“是的,创建索引时是会锁表的。”,但这个回答是不正确的,为什么呢?
2024年09月11日
小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键、聚集索引、辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引的叶子节点存储的是每行数据的辅助索引键 + 该行数据对应的聚集索引键(主键值)。
2024年09月11日
在学习mysql时,我们经常会使用explain来查看sql查询的索引等优化手段的使用情况。在使用explain时,我们可以观察到,explain的输出有一个很关键的列,它就是type属性,type表示的是扫描方式,代表 MySQL 使用了哪种索引类型,不同的索引类型的查询效率是不一样的。
2024年09月11日
在一个连接查询中有两类谓词:本地谓词和连接谓词。
只用于访问一张表的谓词就是本地谓词;定义了表和表之间连接关系的谓词称为连接谓词。连接谓词大部分都是基于主键=外键的。
表的连接有几种方式:循环嵌套连接、哈希连接、合并扫描连接。
循环嵌套连接:
首先在外层表中找到一行满足本地谓词的记录,然后再从内层表中查找与这行匹配的记录,并检查哪些符合内层表的本地谓词条件。
如果有合适的索引已经存在且结果集不是特别大,建议使用循环嵌套连接。
2024年09月11日
?
来源于知识星球中一个星友的问题,使用DAX在PowerBI中新建了一个表,如何为这个表添加索引列呢?
假如数据模型中只有一张订单表,需要从订单表中提取客户表,可以直接使用VALUES函数提取一个不重复客户表,