如何解决如何使'abcd'像CONCATfield,'%'使用索引
我想获取mysql中所有以'abcd'为前缀的行。
此查询将完成工作,但不会使用field1的索引。
select field1
from table1
where 'abcd' LIKE CONCAT(field1,'%')
PS:此查询将获得field1='a'
field1='ab'
field1='abc'
是否可以获取相同的查询结果并使用索引?
解决方法
我认为您不希望field1=''
匹配吗?
这是一种使索引有些有用的方法:
WHERE field1 BETWEEN 'a' AND 'abcd'
AND 'abcd' LIKE 'field1%'
由于@x是'abcd
',因此维护起来稍微容易一点:
WHERE field1 BETWEEN LEFT(@x,1) AND @x
AND @x LIKE CONCAT(field1,'%')
@variables可能无效;在这种情况下,密谋使用JOIN
:
SELECT a.field1
FROM ( SELECT 'abcd' AS x ) init
JOIN table1
WHERE field1 BETWEEN LEFT(init.x,1) AND init.x
AND init.x LIKE CONCAT(field1,'%')
(可能还不够好)
第三种方法是使用存储过程用文字构造我的WHERE
建议,然后执行它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。