我想比较文本字段的最后4个字符。SQLite Like与Substr
明智的性能,我应该做的:
select * from table where col like '%last';
OR
select * from table where substr(col,-4)='last';
我想比较文本字段的最后4个字符。SQLite Like与Substr
明智的性能,我应该做的:
select * from table where col like '%last';
OR
select * from table where substr(col,-4)='last';
我试着用EXPLAIN
查询之前,看到的虚拟机操作,以及一个与substr()
功能有3个以上OP码比一个有LIKE
。这并不意味着它必然会变慢,但它可能是一个迹象。
谢谢Hexa。 – Francisc
您将无法使用时,采取指数的优势两端,用通配符:
LIKE '%.edu'
是反向
另一种方法是将字符串存储在另一列反转版本,指数-content列,然后使用LIKE(或更好的GLOB函数[,因为在几个SQLite实现中LIKE()已被覆盖,这也会阻止索引使用]传递您要查找的字符串的反转版本。例如,如果您正在查找以.edu结尾的网址,则可以在“反向”列中搜索以“ude”开头的值。
谢谢,我会考虑的。 – Francisc
The optimizer overview page,section 4,解释了LIKE操作符被设计用于优化col LIKE 'something that does not begin with a percent sign%'
种类的表达式。
另一个考虑:'LIKE'是SQL92标准,我不太确定'SUBSTR'。 –