替代本地mysql_在MySQL中更快速地替代SUBSTRING()?

我有一个使用SUBSTRING()作为标准的查询:

SELECT p.name p_name,

pa.line1 p_line1,

pa.zip p_zip,

c.name c_name,

ca.line1 c_line1,

ca.zip c_zip

FROM bank b

JOIN import_bundle ib ON ib.bank_id = b.id

JOIN generic_import gi ON gi.import_bundle_id = ib.id

JOIN account_import ai ON ai.generic_import_id = gi.id

JOIN account a ON a.account_import_id = ai.id

JOIN account_address aa ON aa.account_id = a.id

JOIN address ca ON aa.address_id = ca.id

JOIN address pa ON pa.zip = ca.zip OR (pa.zip = ca.zip AND pa.line1 = ca.line1)

JOIN prospect p ON p.address_id = pa.id

JOIN customer c ON a.customer_id = c.id

WHERE b.name = 'M'

AND ib.active = 1

AND gi.active = 1

AND SUBSTRING(p.name, 1, 12) = SUBSTRING(c.name, 1, 12)

LIMIT 100

如您所见,它只是比较p.name和c.name的前12个字符.不幸的是,将此查询添加到WHERE子句会使我的查询变得无法忍受.有没有任何技巧可以做同样的比较,或者我最好的办法是在每个包含客户姓名前12个字符的表中添加另一列?我希望不是后者,因为这将是很多工作,我最终会做这样的几个比较.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值