问题标签 [functional-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.

0 投票
1 回答
589 浏览

java - 为什么 Sybase 不使用功能索引?

我在 sybase 表上创建了一个功能索引。

然后我运行一个使用索引的复杂查询。没有索引需要 17.086 秒。使用索引需要 0.076 秒。

我已经从两个不同的 SQL 客户端以及开发和预生产 Sybase 服务器上运行它。在所有情况下,我都看到了指数的加速。

但是,当我们从 Java 运行相同的查询时(我知道它是相同的,因为我已经记录了生成的 SQL 并直接在 SQL 客户端中使用它),那么性能与添加索引之前完全相同。

当从 ACE 和 SQuirreL 而不是从 Java 运行时,相同的 SQL 查询使用索引可能有什么可能的原因?

我的第一个想法是,也许 Sybase 正在缓存 Prepared Statements 的执行计划,而不是使用索引。我们尝试了几次重新启动 Java 服务器(其他服务使用 Sybase 服务器,因此更难反弹),但没有任何区别。

另一种可能性是我们使用的是非常旧版本的 Sybase 驱动程序:

此版本的 JConnect 是否可能不支持功能索引?

有谁知道这些理论中的任何一个是否正确,或者是否还有其他我错过的东西?

0 投票
1 回答
572 浏览

sql - Oracle Db 11.2 NLS_SORT 索引范围扫描性能

我们在“varchar2”列上使用“nls_sort”功能索引。当我们尝试获取唯一值时,索引性能与普通(非功能性)索引一样好。但是,当我们尝试在“nls_sort”功能索引上编写带有“范围扫描”计划的查询时,我们会遇到严重的性能损失。我准备了一个最小的测试用例来查明问题。

在我们的系统中,以下查询在 5.8 秒内运行

当我们切换到二进制

这次相同的查询在 0.078 秒内运行。是否存在我们遗漏的关于“nls_sort”功能索引的已知问题?你觉得这种行为正常吗?

0 投票
2 回答
987 浏览

sql - 在最大解码函数上创建索引

我们有一个表,它以属性名称和值对的形式存储用户信息。在这个表上,我们通过使用 decode 将行转换为列来创建一个视图。MAX(DECODE(attribute_name,'FirstName',attribute_Value)) FirstName

在解释计划期间,使用名字字段进行查询时会执行完整扫描。在这种情况下,基于函数的索引不适用,因为索引不适用于按函数分组。有什么方法可以在FirstName属性上创建索引?

任何帮助,将不胜感激。

0 投票
0 回答
136 浏览

oracle - Oracle 功能索引与带过滤谓词的索引

我有以下查询:

创建功能索引是否有任何性能优势:

对比以下:

第一个索引使用访问谓词对索引进行范围扫描。

第二个索引使用 Access Predicates = DOB 和 Filter Predicates = UPPER(FIRST_NAME) 和 UPPER(LAST_NAME) 对索引执行 RANGE SCAN。

在我的例子中,两者的成本相同。第一个索引会在某些情况下创造更好的性能,还是与第二个(非功能性)索引一起使用会更好?

谢谢。

0 投票
2 回答
66 浏览

postgresql - 强制更新索引

我将所有权作为“项目->所有权->用户”关系传递,以下函数将项目所有者的名称作为文本获取:

然后使用它来构建一个忽略重音的索引:

当项目更新时,该索引也会更新。但是,当所有者名称更改时,该索引不会被触及,对吧?

在这种情况下,如何强制索引定期更新以赶上?

REINDEX不是一个选项,因为它是锁定的,并且会导致死锁,应该同时发生写入操作。)

0 投票
1 回答
27 浏览

postgresql - Postgresql 不使用创建的功能索引

为了运行查询,

我创建了功能索引:

索引已成功创建,但是当我进行 EXPLAIN ANALYZE 时,我没有发现我的索引正在被使用,任何人都可以帮助我解决我的错误吗?

解释分析结果

我正在使用 Postgresql 9.4.8

0 投票
1 回答
329 浏览

mysql - 如何让 MySQL 在日期时间列上使用功能索引?

假设我正在使用data包含大约 1M 行的表运行 MySQL 8。我想过滤一个范围内的datetimedate(使用日期索引)。

然后让我们只过滤 2018 年的行,假设:

有没有办法使用这个功能索引?

上面的查询使用created(datetime) 或created_date(date from generated column) 索引。

有没有办法直接使用功能索引 created_cast?我什至尝试过USE INDEXor FORCE INDEX,但没有运气。

谢谢你们 :)