索引主要是用于提高数据检索速度的一种机制,通过索引数据库可以快速定位到目标数据的位置,而不需要遍历整个数据集,它就像书籍的目录部分,有它的存在,可以大大加速查询的效率。
那么问题来了:在创建索引时一定会锁表吗?
如果你看的是网上的一些资料,或者是通过 chatgpt,那么很可能得到的结果是这样的“是的,创建索引时是会锁表的。”,但这个回答是不正确的,为什么呢?
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函数提取一个不重复客户表,
2024年09月11日
每个公司针对数据库的设计都有套方案。最近在巡检表的设计,发现之前有张表漏掉了针对更新时间字段updated_at的索引,现在需要加上该索引。
我们都知道,为表增加索引是会对表进行加锁处理的。稍有不慎,可能会导致表被锁后,业务无法进行读写操作而产生事故影响,通常都是报错Waiting for meta data lock。在对表进行修改时,特别是生产上,我们首先要观察对应的表此时是否在高并发读写(选择操作时机)、表的量级信息
2024年09月11日
select * from t whereid=1,id 列有索引,如果是普通的表,需要先从索引中获取 rowid,然后定位到表中,获取 id以外的其他列的动作,这就是回表。
如果查询列含索引列以外的列,回表就不可避免.