加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – Oracle中的子串索引

发布时间:2020-12-12 08:34:08 所属栏目:MsSql教程 来源:网络整理
导读:我刚刚发现,根据我们最常执行的SELECT查询,我们当前的数据库设计效率有点低. IBAN是根据国家特定格式的位置坐标. 由于我们主要在某些表中的IBAN列的精确子字符串上执行JOIN和WHERE,因此我的问题是为列的子字符串分配索引 我们是否被迫在表中添加冗余和索引列
我刚刚发现,根据我们最常执行的SELECT查询,我们当前的数据库设计效率有点低. IBAN是根据国家特定格式的位置坐标.

由于我们主要在某些表中的IBAN列的精确子字符串上执行JOIN和WHERE,因此我的问题是为列的子字符串分配索引

我们是否被迫在表中添加冗余和索引列? IE浏览器.添加列NATION_CODE,IBAN_CIN,IT_CIN,IT_ABI,IT_CAB,IT_ACCOUNT(其中IT_字段仅被视为以ITXX开头的帐户),每个列都有适当的二级索引,或者是否有任何特殊类型的二级索引只能应用于子字符串一栏?

第一个解决方案可能会使DB更复杂,因为IBAN帐户在整个DBMS中使用(显然,我没有完全控制设计).

谢谢

[编辑]典型查询

SELECT * FROM DELEGATIONS WHERE SUBSTR(IBAN,6,5) IN (SELECT ABI FROM BANKS WHERE ANY_CONDITION)

提取目标帐户所属的任何银行,其中包含与CONDITION匹配的任何银行.应该改为

SELECT * FROM DELEGATIONS WHERE SUBSTR(IBAN,1,2) = 'IT' AND SUBSTR(IBAN,5) IN (SELECT ABI FROM BANKS WHERE ANY_CONDITION)

确保BBAN确实持有数字的银行代码[6-11]

解决方法

你正在寻找一个 function based index:
create index ix_substring on TABLE (substr(COLUMN,4,9))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读