问题标签 [composite-index]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL Innodb:大型复合 PK 没有其他索引
我正在创建一个包含四列的 Innodb 表。
桌子
从逻辑的角度来看,A、B、C 列必须一起组成一个 PK。但是,为了提高性能并能够直接从索引中读取(使用索引),我正在考虑一个包含所有 4 列的 PK(A , B, C, D)。
问题
将附加列附加到 Innodb 表上的主键的性能是什么?
注意事项
- 代理主键绝对不可能
- 此表上不存在其他索引
- 表是读/写密集型(两者大致相等)
谢谢!
mysql - 如何避免对带有 order by 语句的前缀查询的 mysql 复合索引进行文件排序?
我有一个 1 GB 的 mysql 表,其中包含三个列(德国二元组):
我还创建了一个复合索引:
另外我压缩了表格并使其只读并使用以下方法对索引进行排序:
现在我询问具有以下结构的查询:
- 修复源
- 为目标指定前缀
- 按分数检索前 k 行
如下所示:
mysql explain 告诉我仍然使用文件排序!
我明白,如果我将查询更改为:
将没有文件排序,但错误的是涉及文件排序。
从这个讨论中我意识到 desc 关键字是问题所在。所以我们不检查:
完美的工作。
但我想要对分数而不是目标进行降序排序。以这种方式创建索引
不是一个选项,因为目标过滤器将为文件排序产生然后或者如果不是,则如果前缀很长并且源是一个常用词,则需要遍历的元素的结果列表可能非常长。
我不知何故感觉没有明显的解决方案?
mysql - MySql 中的复合索引是否双向工作?
考虑具有以下架构的 MySql 表
现在我需要像这样的查询
并且
所以我正在考虑对 2 列进行复合索引,如下所示:
和
1)索引是根据需要创建的,但是当记录很多(〜百万)时它们会起作用吗?
2) 索引会在正确的时间使用正确的索引来加速查询吗?
PS:我不需要sort/range selection
查询,只需要直接匹配查询。是否有更好的索引方案可用于此要求?
mysql - 复合属性索引
当我们在属性上创建索引时,会为此属性创建一棵树。
但是当我们创建一个具有复合属性的索引时会发生什么呢?创建了两棵树?两者都是同一棵树的一部分?什么?
mysql - 对使用索引时查看半百万行的 mysql 感到困惑
我有一个包含 300M 行(并且还在增长)的表(location_data)。
我想为 foo_id 的特定值找到最新条目 (MAX(id))的 id 。
- 下面的查询是最优的吗?它通常需要几秒钟。
- “rows”值 561826 是否意味着 MySQL 正在读取并扫描 foo_id 的所有行,尽管它应该能够使用复合索引立即跳转到 foo_id 的最后一个 id?
- 为什么“keylen”4,当它由两个 32 位整数组成时?
最重要的是,我怎样才能加快这个查询?
mysql - 综合指数
我是 MySQL 新手,我需要在现有表(包含大约 200K 行)上添加索引。
我有 2 个查询需要从索引中受益:
和 :
我正在考虑引入多列索引(在 completed_time 和 deleted_time 上)但是,我不确定条件“s.completed_time is not null”是否符合使这些查询使用复合索引的条件。
您对什么是最好的(复合索引或 2 个索引)有任何想法吗?我正在尝试使用“解释”来找出最好的方法,但我不确定如何解释结果。
更一般地说:对于(column1,column2)上具有复合索引的表,我知道仅对column2进行过滤不会使用索引。但是,如果我在正确的情况下引入类似 (column1 > MIN_VALUE) 或 (column1 is not null) 的虚拟条件会怎样?
谢谢!
mysql - 慢速 MySql 查询:检查和建议复合索引的工具
我有一个跨多个性能较差的表连接的查询,因此我使用试错技术来创建复合索引,以尝试根据我正在过滤的列改进性能,但我没有得到想要的结果。我正在使用 EXPLAIN 计划来尝试确定合适的索引策略。
任何人都可以建议另一种可以帮助解决此问题的工具吗?
mysql - MySql 复杂的连接性能问题
请考虑以下查询
要获取我需要的数据集,我需要过滤(注释掉的)CONTACTS client_id 以及 OUTBOUND_MESSAGES client_id,但这就是将性能从毫秒变为数十分钟的原因。
没有“ AND CON.MM_CLIENT_ID = 1 ”的执行计划:
“ AND CON.MM_CLIENT_ID = 1 ”的执行计划:
任何有关如何格式化上述内容以使其更容易阅读的建议都会很好。
ID 字段是主键。所有连接列都有索引。
sql - EF Migrations 在添加复合索引时删除索引
当我使用外键添加复合索引时,我注意到 EF 删除了外键上的索引。所以我需要更好地理解复合索引:)
我使用这个答案添加了复合索引并生成了我的 EF 代码第一个迁移文件。
添加复合索引:
迁移文件:
我不明白的是为什么它需要删除我的外键上的索引。据我所知,一个属性可以毫无问题地用于多个索引。那么它为什么会被丢弃呢?这不会使连接变慢吗?
模型:
映射:
sql-server - SQL Server 多索引解决方案?
假设我们有一个带有名称的Tournament
表,该表的列是Id, Name, GameId, TypeId, cityId, Status, Format
. 除了Id
和Name
列我想用这些列的所有组合搜索这个表,我的意思是我可以用GameId & Status
orTypeId & CityId & Status
或搜索Status & Format
。
如您所见,所有搜索选项计数等于
所以这是我的问题,最好的索引方案是什么,为什么?我认为选项是,
- 每列的索引。
- 所有列的复合索引。
我知道复合索引确实比单索引快,但是如果你按照正确的顺序排列,我的意思是如果我在[GameId, TypeId, CityId, Status, Format]
列上有一个复合索引并且搜索GameId = 1 & TypeId = 2 & CityId = 3 & Status = 5 & Format = 6
它会很好用,但是如果我搜索GameId = 1 & Format = 6
我无法意识到这个查询将如何工作足够快,据我所知,SQL Server 复合索引只是一个 b-tree,复合索引的 b-tree 键是从左到右列排序的。