查询:
SELECt * FROM table WHERe ? LIKE (col || '%');
可以改写为(Postgres和MySQL):
SELECt * FROM table WHERe col = left(?, length(col));
如前所述,第一种形式也应该起作用。它可能会非常棘手,但是,因为 有特殊含义的字符
的
LIKE(至少
_%) 在列
将不得不逃走。如果希望它与MySQL和Postgres一起使用,则必须在两种实现中都观察到特殊字符。因此,第二种形式在主体上 不易出错 。
表现
这些查询
col都不能在其上使用索引,它们都不是可保留的。可以通过查找给定搜索模式的所有可能前缀来重新评估该问题,可以以
?类似的方式对它进行优化



