问题标签 [database-indexes]

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.

0 投票
1 回答
3651 浏览

nhibernate - Fluent NHibernate - 是否可以将属性映射到 Sql Server 中的持久计算列

我想使用 Fluent NHibernate 将只读属性映射到 Sql Server 中的计算列。该属性是另一个的子字符串。我这样做是为了使子字符串可索引并具有更好的搜索性能。但是当我在映射中使用公式函数时,该属性不会映射到数据库中的计算列,而是在使用查询时计算。

0 投票
5 回答
18234 浏览

sql-server - SQL Server - 由于“ARITHABORT”,插入失败

我使用 NHibernate 和 SQL Server 2005,并且在我的一个表中的计算列上有一个索引。

我的问题是,当我在该表中插入一条记录时,出现以下错误:

INSERT 失败,因为以下 SET 选项的设置不正确:'ARITHABORT'

SET ARITHABORT ON;在插入之前使用,但仍然有这个错误。

0 投票
1 回答
70 浏览

sql - 必须有一些索引方案才能使这项工作

Sqlite 有一个限制,即每次查询只能使用一个索引。这个限制目前正在困扰我,但我需要 Sqlite,因为我不知道任何其他可以竞争插入速度的本地数据库引擎(尽管我愿意接受建议)。

我有一个包含一百万到一千万行的简单表(以及其他表):

查看我的数据,我有大约 2000 个唯一 TelemetryId 值和每个唯一 TelemetryId 大约 25000 行。我一直在使用这个索引:

但是,该索引在我没有传入 TimestampTicks 约束的查询中失败(显然)。该索引是在我尝试了 TimestampTicks 和 TelemetryId 上的单个索引之后。根据我的测试,甚至在运行之后ANALYZE,Sqlite 只会在引用 TelemetryId 时使用索引——这在我限制为时间戳范围的查询中是错误的。如果我颠倒组合索引中列的顺序,以前快速的查询就会变慢。

这是我的查询的完整列表。你能看到一个适用于所有这些的索引方案吗?

0 投票
1 回答
3030 浏览

sql-server - 如何在 SQL Server 中为字符串列创建非聚集索引?

我刚试过这个,得到了有用的信息

表 'Users' 中的列 'Username' 的类型不能用作索引中的键列。

用户名是一个 nvarchar(max) 列。

0 投票
1 回答
804 浏览

sql - 为什么 Sqlite 不使用这个 ORDER BY 的索引?

我有这个查询:

我有这个索引:

但是,索引不用于 ORDER BY 子句。我得到这个查询解释:

为什么是 B-TREE?如果我反转索引,我实际上会得到更差的性能。这是查询计划:

我不知道为什么该排序不允许使用 TelemetryId。我真的需要这个查询更快。有什么帮助吗?

0 投票
3 回答
3713 浏览

postgresql - 在 Postgres 字符串数组上创建不区分大小写的索引

varchar[]在 Postgres 9.2 中使用列(varchar 数组)来存储一些标签。在按标签检索行时,我希望查询不区分大小写。但是,我想保留案例以在 UI 中显示(因此我不能将所有内容都存储为小写)。

所以,我的问题是如何在 Postgres 中通过 varchar 数组创建不区分大小写的索引?一种可能的方法是在列上创建一个功能性 GIN 索引。如何做到这一点?还有其他方法吗?

0 投票
1 回答
55 浏览

sql-server-2005 - 重复的唯一标识符索引

我认为我对 SQL Server 2005 中的索引(可能还有所有索引??)的理解是有缺陷的,请教育我。

我们有一个表,说 5 列:

该表有 3000 万行(如果重要的话,实际表中实际上大约有 30 列)。

这些Id列都是UniqueIdentifer,所以围绕如果其中一个是一个大字段,它可能不是多余的事实的帖子似乎并不相关。

如果我在列上添加索引ProductID

ProductId然后在AND OrderIdAND上添加另一个索引PriceId

第一个索引是多余的吗,即 SQL Server 计划程序应该恢复使用第二个索引并且性能也一样好?

之所以出现这个问题,是因为删除第一个索引会导致性能大幅下降(一个进程的 10 秒已变为 2 分半钟)。我已经把它缩小到那个特定的索引,所以接下来就是跟踪所有的 SQL,但这将是一项大任务,除非我必须这样做,否则我不想做。

0 投票
1 回答
60 浏览

sql - 如何优化此查询

这个查询很慢。我在 KeyTable 上的 RID 上有一个聚集索引,在 RuleTable 上的 RuleId 上有一个聚集索引,在 RuleTable 上的 RuleId+SubjectId 上有唯一的非聚集索引。(RuleTable 用于其他各种地方)

在上面的查询中,如果我引入一个 where 子句,例如

运行时间减少 > 50%。但问题是我使用原始表结果不带WHERE子句的方式如下

有没有办法优化这个查询?任何关于索引或递归方式的建议都会有所帮助

0 投票
0 回答
69 浏览

mysql - 为什么更改一个简单的查询参数会导致 MySQL 查询计划的严重变化(解释)?

在使用“解释”命令检查 MySQL 中的查询时,我遇到了一种奇怪的情况。我有一个表,它在“Period”、“X”和“Y”列上有三个非唯一的单列索引。所有这三个列都具有相同的整数数据类型。然后我检查以下命令:

第一个显示“使用索引条件;使用 where”,但奇怪的是,第二个仅显示“使用 where”,所以似乎更改一个参数以某种方式消除了查询执行中的索引。

该表总共有大约 65000 行,每个 Period 值大约 5000(所以它是平衡的),第一个查询返回大约 2000 行,第二个返回大约 500。另外,后一个 period 值(201304)不是“最后一个" 物理在表中,前一个值也不是第一个,有很多行的周期值小于和大于这两个特定的。

我的原始表格非常复杂,有很多列,所以我不能把它粘贴到这里。但是唯一的索引就是这三个,而且查询和我测试时使用的一样,所以我希望不要太在意。

有人可以给我任何提示什么会导致这种情况,如果我需要照顾一些我不知道的事情!谢谢你。

0 投票
1 回答
47 浏览

mysql - MySQL 多列唯一索引,不考虑列

简单表结构:id_1 int, id_2 int,

这是一个创建用户之间关系的简单关系表。id_1 和 id_2 将始终是存在于另一个表中的 user_id。我正在尝试创建一个索引,使得该表中的任何一对 user_id 都不能存在超过一次,无论哪个 id 在哪一列。例如给定用户 id:1 和 2,如果我们有记录:1 ,2

然后记录: 2,1 应该被认为是重复的。

我对唯一索引的所有尝试都不是以这种方式操作的,因为它们是特定于列的。有没有办法构造这个或者必须用存储过程或类似的东西来完成?