MySQL常见的两种存储引擎:MyISAM与InnoDB Mysql索引使用的数据结构主要有BTree索引 和 哈希索引 。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引。 Mysql的BTr ...
分类:
数据库 时间:
2020-03-27 11:11:43
阅读次数:
127
使用pairs输出table时,其输出顺序与通常认知不相符. ...
分类:
其他好文 时间:
2020-03-25 16:24:50
阅读次数:
282
一、聚簇索引 数据与索引放在一起,找到索引就找到数据 二、非聚簇索引 数据与索引存储分开 使用场景 动作描述 使用聚簇索引 使用非聚簇索引 列经常被分组排序 应 应返回某范围内的数据 应 不应一个或极少不同值 不应 不应小数目的不同值 应 不应大数目的不同值 不应 应频繁更新的列 不应 应外键列 应 ...
分类:
其他好文 时间:
2020-03-21 15:05:22
阅读次数:
48
原文:ORDER BY导致索引使用不理想 在MySQL中经常出现未按照理想情况使用索引的情况,今天记录一种Order by语句的使用导致未按预期使用索引的情况。 1. 问题现象 1.1 SQL语句: SELECT DISTINCT p.* FROM tb_name p WHERE 1=1 AND p... ...
分类:
其他好文 时间:
2020-03-15 22:37:24
阅读次数:
86
1.SQL 创建索引 使用CREATE 语句创建索引 CREATE INDEX index_name ON table_name(column_name,column_name) include(score) 普通索引 CREATE UNIQUE INDEX index_name ON table_ ...
分类:
数据库 时间:
2020-03-14 11:11:49
阅读次数:
83
需求背景业务系统将各类的报表和统计数据存放于ES中,由于历史原因,系统每天均以全量方式进行统计,随着时间的推移,ES的数据存储空间压力巨大。同时由于没有规划好es的索引使用,个别索引甚至出现超过最大文档数限制的问题,因此我们需要最小的代价来解决这个问题。下面以内网开发、测试环境举例使用python脚本解决这个问题。EachElasticsearchshardisaLuceneindex.There
分类:
编程语言 时间:
2020-02-21 18:33:04
阅读次数:
275
1、定义: 单一索引: 单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上; 复合索引: 复合索引也叫组合索引; 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。 复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引; 同时有两个概念叫做窄索引和宽索引,窄索引是指索 ...
分类:
数据库 时间:
2020-02-10 13:45:37
阅读次数:
76
如果使用索引 a,每次从索引 a 上拿到一个值,都要回到主键索引上查出整行数据,这个代价优化器也要算进去的。 而如果选择扫描 10 万行,是直接在主键索引上扫描的,没有额外的代价。 优化器会估算这两个选择的代价,从结果看来,优化器认为直接扫描主键索引更快。 当然,从执行时间看来,这个选择并不是最优的 ...
分类:
数据库 时间:
2020-01-31 21:08:45
阅读次数:
116
使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。 于是,你就有个问题:当要给字符串创建前缀索引时,有什么方法能够确定我应该使用多长的前缀呢? 实际上,我们在建立索引时关注的是区分度,区分度越高越好。 因为区分度越高,意味着重复的键值越少。 因此,我们可以通过统计索引上有 ...
分类:
其他好文 时间:
2020-01-31 20:50:42
阅读次数:
61
6 覆盖索引 【可参考博文 https://www.cnblogs.com/kerrycode/p/9909093.html】 如果一个索引包含所有需要查询的字段,则称之为“覆盖索引”。 使用覆盖索引,只需要扫描索引,而无需回表: 一般索引比数据行数少,若只需要读取索引,则mysql访问数据量会减少 ...
分类:
其他好文 时间:
2020-01-28 09:17:31
阅读次数:
67