我刚刚发现,根据我们执行最多的SELECT
查询,我们当前的数据库设计有点效率低下。根据特定于国家的格式,IBANs是位置坐标。
由于我们在某些表中对IBAN列的精确子字符串执行JOIN
s和WHERE
s,所以我的问题是为列的子字符串分配索引。
我们是否被迫向表中添加冗余和索引列?即。添加列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)
提取目标账户属于符合条件的任何银行的所有支付授权。应改为
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中。
https://stackoverflow.com/questions/8487520
复制相似问题