问题标签 [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.
nhibernate - Fluent NHibernate - 是否可以将属性映射到 Sql Server 中的持久计算列
我想使用 Fluent NHibernate 将只读属性映射到 Sql Server 中的计算列。该属性是另一个的子字符串。我这样做是为了使子字符串可索引并具有更好的搜索性能。但是当我在映射中使用公式函数时,该属性不会映射到数据库中的计算列,而是在使用查询时计算。
sql-server - SQL Server - 由于“ARITHABORT”,插入失败
我使用 NHibernate 和 SQL Server 2005,并且在我的一个表中的计算列上有一个索引。
我的问题是,当我在该表中插入一条记录时,出现以下错误:
INSERT 失败,因为以下 SET 选项的设置不正确:'ARITHABORT'
我SET ARITHABORT ON;
在插入之前使用,但仍然有这个错误。
sql - 必须有一些索引方案才能使这项工作
Sqlite 有一个限制,即每次查询只能使用一个索引。这个限制目前正在困扰我,但我需要 Sqlite,因为我不知道任何其他可以竞争插入速度的本地数据库引擎(尽管我愿意接受建议)。
我有一个包含一百万到一千万行的简单表(以及其他表):
查看我的数据,我有大约 2000 个唯一 TelemetryId 值和每个唯一 TelemetryId 大约 25000 行。我一直在使用这个索引:
但是,该索引在我没有传入 TimestampTicks 约束的查询中失败(显然)。该索引是在我尝试了 TimestampTicks 和 TelemetryId 上的单个索引之后。根据我的测试,甚至在运行之后ANALYZE
,Sqlite 只会在引用 TelemetryId 时使用索引——这在我限制为时间戳范围的查询中是错误的。如果我颠倒组合索引中列的顺序,以前快速的查询就会变慢。
这是我的查询的完整列表。你能看到一个适用于所有这些的索引方案吗?
sql-server - 如何在 SQL Server 中为字符串列创建非聚集索引?
我刚试过这个,得到了有用的信息
表 'Users' 中的列 'Username' 的类型不能用作索引中的键列。
用户名是一个 nvarchar(max) 列。
sql - 为什么 Sqlite 不使用这个 ORDER BY 的索引?
我有这个查询:
我有这个索引:
但是,索引不用于 ORDER BY 子句。我得到这个查询解释:
为什么是 B-TREE?如果我反转索引,我实际上会得到更差的性能。这是查询计划:
我不知道为什么该排序不允许使用 TelemetryId。我真的需要这个查询更快。有什么帮助吗?
postgresql - 在 Postgres 字符串数组上创建不区分大小写的索引
我varchar[]
在 Postgres 9.2 中使用列(varchar 数组)来存储一些标签。在按标签检索行时,我希望查询不区分大小写。但是,我想保留案例以在 UI 中显示(因此我不能将所有内容都存储为小写)。
所以,我的问题是如何在 Postgres 中通过 varchar 数组创建不区分大小写的索引?一种可能的方法是在列上创建一个功能性 GIN 索引。如何做到这一点?还有其他方法吗?
sql-server-2005 - 重复的唯一标识符索引
我认为我对 SQL Server 2005 中的索引(可能还有所有索引??)的理解是有缺陷的,请教育我。
我们有一个表,说 5 列:
该表有 3000 万行(如果重要的话,实际表中实际上大约有 30 列)。
这些Id
列都是UniqueIdentifer
,所以围绕如果其中一个是一个大字段,它可能不是多余的事实的帖子似乎并不相关。
如果我在列上添加索引ProductID
。
ProductId
然后在AND OrderId
AND上添加另一个索引PriceId
第一个索引是多余的吗,即 SQL Server 计划程序应该恢复使用第二个索引并且性能也一样好?
之所以出现这个问题,是因为删除第一个索引会导致性能大幅下降(一个进程的 10 秒已变为 2 分半钟)。我已经把它缩小到那个特定的索引,所以接下来就是跟踪所有的 SQL,但这将是一项大任务,除非我必须这样做,否则我不想做。
sql - 如何优化此查询
这个查询很慢。我在 KeyTable 上的 RID 上有一个聚集索引,在 RuleTable 上的 RuleId 上有一个聚集索引,在 RuleTable 上的 RuleId+SubjectId 上有唯一的非聚集索引。(RuleTable 用于其他各种地方)
在上面的查询中,如果我引入一个 where 子句,例如
运行时间减少 > 50%。但问题是我使用原始表结果不带WHERE
子句的方式如下
有没有办法优化这个查询?任何关于索引或递归方式的建议都会有所帮助
mysql - 为什么更改一个简单的查询参数会导致 MySQL 查询计划的严重变化(解释)?
在使用“解释”命令检查 MySQL 中的查询时,我遇到了一种奇怪的情况。我有一个表,它在“Period”、“X”和“Y”列上有三个非唯一的单列索引。所有这三个列都具有相同的整数数据类型。然后我检查以下命令:
第一个显示“使用索引条件;使用 where”,但奇怪的是,第二个仅显示“使用 where”,所以似乎更改一个参数以某种方式消除了查询执行中的索引。
该表总共有大约 65000 行,每个 Period 值大约 5000(所以它是平衡的),第一个查询返回大约 2000 行,第二个返回大约 500。另外,后一个 period 值(201304)不是“最后一个" 物理在表中,前一个值也不是第一个,有很多行的周期值小于和大于这两个特定的。
我的原始表格非常复杂,有很多列,所以我不能把它粘贴到这里。但是唯一的索引就是这三个,而且查询和我测试时使用的一样,所以我希望不要太在意。
有人可以给我任何提示什么会导致这种情况,如果我需要照顾一些我不知道的事情!谢谢你。
mysql - MySQL 多列唯一索引,不考虑列
简单表结构:id_1 int, id_2 int,
这是一个创建用户之间关系的简单关系表。id_1 和 id_2 将始终是存在于另一个表中的 user_id。我正在尝试创建一个索引,使得该表中的任何一对 user_id 都不能存在超过一次,无论哪个 id 在哪一列。例如给定用户 id:1 和 2,如果我们有记录:1 ,2
然后记录: 2,1 应该被认为是重复的。
我对唯一索引的所有尝试都不是以这种方式操作的,因为它们是特定于列的。有没有办法构造这个或者必须用存储过程或类似的东西来完成?