2014-03-05 222 views
0

我有一个MySQL varchar字段与值这样的一个子之间的连接性能:提高的一个varchar领域并应用于其它领域

'00007_1' 
'00016_1' 
'00016_2' 
'00231_1' 
'00326_3' 

我正在寻找最好的方式把这个领域加入与一个varchar字段的另一个表中包含这些值(我列出那些匹配前面的那个):

'7' 
'16' 
'16' 
'231' 
'326' 

这是怎么了我做:

SELECT * 
FROM R 
INNER JOIN RC ON Trim(leading '0' from Substring(R.N_DEN,1,instr(R.N_DEN,'_')-1)) = RC.N_DEN 

有人知道是否有更快更好的性能解决方案吗?

回答

1

用连接表中预先派生的值创建派生列。但是会有一个空间折衷。

+0

我需要一个触发器来维护更新派生字段,不是吗? – kiks73

+0

有很多可用的选项。这里不建议使用触发器。触发器在很多数据库中都有很多性能问题,通常不推荐。 Derived列应该由每次插入/更新(只有在更新相关列时)填充此表的代码填充。另外一种方法是定期加入这两张表格。但这取决于诸如查询这两个表的频率以及这些表更新的频率等因素。 –