我刚刚发现我们现在的数据库设计效率有点低SELECT
我们执行最多的查询。 IBAN 是根据国家特定格式的位置坐标。
因为我们主要是表演JOIN
s and WHERE
在某些表中 IBAN 列的精确子字符串上,我的问题是关于为列的子字符串分配索引
我们是否被迫向表中添加冗余列和索引列? IE。添加列NATION_CODE
, IBAN_CIN
, IT_CIN
, IT_ABI
, IT_CAB
, IT_ACCOUNT
(其中 IT_ 字段仅考虑以 ITXX 开头的帐户)每个字段都有适当的二级索引or是否有任何特殊类型的二级索引只能应用于列的子字符串?
第一个解决方案可能会使数据库更加复杂,因为整个 DBMS 都使用 IBAN 帐户(显然,我无法完全控制设计)。
谢谢
[编辑] 典型查询
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, 6, 5) IN (SELECT ABI FROM BANKS WHERE ANY_CONDITION)
确保 BBAN 确实保存了数字银行代码 [6-11]