问题标签 [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.
java - 为什么 Sybase 不使用功能索引?
我在 sybase 表上创建了一个功能索引。
然后我运行一个使用索引的复杂查询。没有索引需要 17.086 秒。使用索引需要 0.076 秒。
我已经从两个不同的 SQL 客户端以及开发和预生产 Sybase 服务器上运行它。在所有情况下,我都看到了指数的加速。
但是,当我们从 Java 运行相同的查询时(我知道它是相同的,因为我已经记录了生成的 SQL 并直接在 SQL 客户端中使用它),那么性能与添加索引之前完全相同。
当从 ACE 和 SQuirreL 而不是从 Java 运行时,相同的 SQL 查询使用索引可能有什么可能的原因?
我的第一个想法是,也许 Sybase 正在缓存 Prepared Statements 的执行计划,而不是使用索引。我们尝试了几次重新启动 Java 服务器(其他服务使用 Sybase 服务器,因此更难反弹),但没有任何区别。
另一种可能性是我们使用的是非常旧版本的 Sybase 驱动程序:
此版本的 JConnect 是否可能不支持功能索引?
有谁知道这些理论中的任何一个是否正确,或者是否还有其他我错过的东西?
sql - Oracle Db 11.2 NLS_SORT 索引范围扫描性能
我们在“varchar2”列上使用“nls_sort”功能索引。当我们尝试获取唯一值时,索引性能与普通(非功能性)索引一样好。但是,当我们尝试在“nls_sort”功能索引上编写带有“范围扫描”计划的查询时,我们会遇到严重的性能损失。我准备了一个最小的测试用例来查明问题。
在我们的系统中,以下查询在 5.8 秒内运行
当我们切换到二进制
这次相同的查询在 0.078 秒内运行。是否存在我们遗漏的关于“nls_sort”功能索引的已知问题?你觉得这种行为正常吗?
sql - 在最大解码函数上创建索引
我们有一个表,它以属性名称和值对的形式存储用户信息。在这个表上,我们通过使用 decode 将行转换为列来创建一个视图。MAX(DECODE(attribute_name,'FirstName',attribute_Value)) FirstName
在解释计划期间,使用名字字段进行查询时会执行完整扫描。在这种情况下,基于函数的索引不适用,因为索引不适用于按函数分组。有什么方法可以在FirstName
属性上创建索引?
任何帮助,将不胜感激。
oracle - Oracle 功能索引与带过滤谓词的索引
我有以下查询:
创建功能索引是否有任何性能优势:
对比以下:
第一个索引使用访问谓词对索引进行范围扫描。
第二个索引使用 Access Predicates = DOB 和 Filter Predicates = UPPER(FIRST_NAME) 和 UPPER(LAST_NAME) 对索引执行 RANGE SCAN。
在我的例子中,两者的成本相同。第一个索引会在某些情况下创造更好的性能,还是与第二个(非功能性)索引一起使用会更好?
谢谢。
postgresql - 强制更新索引
我将所有权作为“项目->所有权->用户”关系传递,以下函数将项目所有者的名称作为文本获取:
然后使用它来构建一个忽略重音的索引:
当项目更新时,该索引也会更新。但是,当所有者名称更改时,该索引不会被触及,对吧?
在这种情况下,如何强制索引定期更新以赶上?
(REINDEX
不是一个选项,因为它是锁定的,并且会导致死锁,应该同时发生写入操作。)
postgresql - Postgresql 不使用创建的功能索引
为了运行查询,
我创建了功能索引:
索引已成功创建,但是当我进行 EXPLAIN ANALYZE 时,我没有发现我的索引正在被使用,任何人都可以帮助我解决我的错误吗?
解释分析结果
我正在使用 Postgresql 9.4.8
mysql - 如何让 MySQL 在日期时间列上使用功能索引?
假设我正在使用data
包含大约 1M 行的表运行 MySQL 8。我想过滤一个范围内的datetime
列date
(使用日期索引)。
然后让我们只过滤 2018 年的行,假设:
有没有办法使用这个功能索引?
上面的查询使用created
(datetime) 或created_date
(date from generated column) 索引。
有没有办法直接使用功能索引 created_cast
?我什至尝试过USE INDEX
or FORCE INDEX
,但没有运气。
谢谢你们 :)